Moshi で SparseArray を JSON にシリアル化するにはどうすればよいですか? これに適したアダプターを作成する方法が本当にわかりません。助けていただければ幸いです。
編集:このコードで動作させました
class SparseArrayJsonAdapter : JsonAdapter<SparseArray<WaterWarningItem>>() {
override fun fromJson(reader: JsonReader?): SparseArray<WaterWarningItem> {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun toJson(writer: JsonWriter?, value: SparseArray<WaterWarningItem>) {
writer?.let { writer ->
writer.beginArray()
for (i in 0 until value.size()) {
val key = value.keyAt(i)
val item = value[key]
writeWarningItem(writer, item)
}
writer.endArray()
writer.close()
}
}
fun writeWarningItem(writer: JsonWriter, item: WaterWarningItem) {
writer.beginObject()
writer.name("id").value(item.id)
writer.name("title").value(item.title)
writer.name("warning_lvl").value(item.warningLvl)
writer.name("own_limit").value(item.ownLimit)
writer.endObject()
}
}
私はこのアダプターを次のように使用します
val a = SparseArrayJsonAdapter()
val json = a.toJson(value)
しかし、これが正しい方法かどうかはわかりません。アダプターはすべての例で moshi builder によって取り付けられていますが、私のアダプターでは動作しません。これでよろしいですか?