【发布时间】:2018-03-27 15:36:46
【问题描述】:
如何通过 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 附加,但它不适用于我的适配器。 这样可以吗?
【问题讨论】:
-
你试过什么?您可以先创建一个更简单的内置地图适配器版本:github.com/square/moshi/blob/master/moshi/src/main/java/com/…
-
你能发布你的 JSON 是什么样的吗?
-
我已经编辑了我的问题以添加我是如何工作的。