❄️
freezedでJsonSerializableのオプションを使いたいときには
背景
- freezedを使っている
- dart/flutterの中では
camelCase
,PascalCase
で命名を統一したい - しかしAPIとのやりとりでは,jsonのkeyを
snake_case
にする必要があった - 候補としては以下のようなものを考えた
- dioのinterceptorの仕組みとrecaseの組み合わせ
- json_serializableを使う
- そもそもfreezedはJsonSerializableと組み合わせて使うこともできるはず
- オプション渡す方法がよくわからない(明示的にドキュメントになっていない)
- 作者が言及している関連してそうなissueの書き方を真似る
- できた!!
結論
- freezedではすべてのJsonSerializableのオプションがサポートされたはず
- しかし, こう書くとエラー(生成されたファイルを確認すると,重複して生成されてしまっていた)
(fieldRename: FieldRename.snake)
class Example with _$Example {
factory Example() = GeneratedClass;
}
- なのでこう書き換えるとうまくいきます
class Example with _$Example {
(fieldRename: FieldRename.snake)
factory Example() = GeneratedClass;
}
参考になった方へ
- LIKE押してってください!
Discussion