はじめに
APIレスポンスのJSONフィールドがスネークケースで返されることは珍しくありません。
一方で、クライアント側ではキャメルケースを使いたい場合が多いと思います。
通常、Dartでこれを解決するためには @JsonKey アノテーションを使用してJSONのキー名とプロパティ名を明示的にマッピングする必要があります。
しかし、大量のプロパティが存在する場合、それぞれにアノテーションをつけるのは大変ですし、つけ忘れる可能性も高まります。
そこで json_serializable
パッケージの機能を利用し、自動でキャメルケースに変換する方法を見つけたので、それを共有します。
設定方法
設定は非常に簡単です。(パッケージをインストールしてない人はこちらから)
プロジェクトのルートディレクトリに build.yaml ファイルを作成し、以下の内容を追記します。
targets:
$default:
builders:
json_serializable:
options:
field_rename: snake
デフォルトの設定はfield_rename: null
となっているので、snake
を指定することで、スネークケースのキー名が自動的に対応するキャメルケースのプロパティにマッピングされます。便利ですね!
また、他にも細かい設定ができるので詳細は、json_serializableパッケージの公式ドキュメントを参照してください。
参考資料