nullをnullのままJSONに含みたい!
data class Hoge(val foo: Int? = null,
val bar: String = "baz") : Serializable
こういうのを
{
"foo": null,
"bar": "baz"
}
こうしたい。
しかし、moshiでは、デフォルトの状態だとnull
はシリアライズされずフィールドごと無かったことになります。
{
"bar": "baz"
}
↑こうなる
ライブラリみっけた
このライブラリでは、様々なmoshiのアダプターを提供しています。gsonで見たことあるような機能が提供されてます。
導入
compile 'com.serjltt.moshi:moshi-lazy-adapters:2.1'
使用例
今回のようにnullをシリアライズしたい場合は以下のように使います。
data class Hoge(@Serializable val foo: Int? = null,
val bar: String = "baz") : Serializable
val moshi = Moshi.Builder()
.add(SerializeNulls.ADAPTER_FACTORY)
.build()
val hoge = Hoge()
val jsonAdapter = moshi.adapter(Hoge::class.java)
val json = jsonAdapter.toJson(hoge)
で
{
"foo": null,
"bar": "baz"
}
こうなります。