Android の JSON のパース方法(Kotlin Serialization)

botman3 Android

Android Studio-4.1.1 Kotlin-1.4.21

はじめに

通信処理とかで JSON をパースする際に GSON 使ってたんですが Kotlin Serialization ってのがあるらしいです。
使い方もすごく簡単だし Kotlin で JSON を扱う場合はこれを使いましょう!

公式リポジトリ
Kotlin/kotlinx.serialization

導入方法

  1. プロジェクトの build.gradle に下記を追加

  2. モジュールの build.gradle に下記を追加

使い方

使い方はめっちゃ簡単!下記のように @Serializable をつけるだけ!

Retrofit を使った通信の場合

Retorfit を使った通信でレスポンスをパースする場合は下記のようにします。

  1. モジュールの build.gradle の dependencies に下記を追加

  2. Retrofit.Builder で Converter を指定

これでレスポンスをパースできるようになります。

色々なJSON

オプショナル

下記のように JSON に num のキーが存在しない場合このままではエラーになります。

kotlinx.serialization.MissingFieldException: Field 'num' is required, but it was missing

下記のようにデフォルト値を設定すればいいようです。(Optional アノテーションはなくなったのかな??)

ただデフォルト値はエンコード時に無視されるらしい。。。

プロパティ名とキー名が違う場合

下記のように JSON のキーと異なるプロパティ名にしたい場合は SerialName アノテーションを使います。

入れ子

Serializable アノテーションをつけたクラスのプロパティに Serializable アノテーションをつけたクラスを利用することもできます。

下記のようにリストもあつかえます。

おわりに

これでざっくり使い方はわかりました! Swift の Codable みたいに使えてとっつきやすいです!!

ちょっと残念なのが個人的によく使っていた JSONExport は Kotlin Serialization には対応してないみたいです。。。

複雑な JSON はまた出会ったときに考えます!

参考

コメント

タイトルとURLをコピーしました