moshi では、property の名前を json の field 名と別にしたい場合 @Json アノテーションを使いますが、@Json ではなく @field:Json を使うようにします。
- class Player {
- @field:Json(name = "lucky number") val luckyNumber: Int
-
- ...
- }
class Player {
@field:Json(name = "lucky number") val luckyNumber: Int
...
}
R8 / ProGuard をかけない場合は @Json でも動くのですが、R8 / ProGuard をかける場合は(ライブラリに含まれる keep 設定では) @field:Json にしないとこの指定が効かず、上記のコードだと実行時に luckyNumber にアクセスしたときに NullPointerException になります。
Moshiの`@JsonClass(generateAdapter = true)`を使ってもいいらしい。
返信削除出典:https://github.com/square/moshi/issues/454#issuecomment-407759722