1

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 によって取り付けられていますが、私のアダプターでは動作しません。これでよろしいですか?

4

1 に答える 1