moshi 可空列表失败 "required value"
moshi nullable list fails with "required value"
以下作品:
package com.squareup.moshi.problem
import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)
data class Foo(
val bar: String?
)
fun main() {
val adapter=Moshi.Builder().build().adapter<Foo>(Foo::class.java)
adapter.fromJson("{}")
}
但是当使用列表时它失败了:
package com.squareup.moshi.problem
import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)
data class Foo(
val bar: List<String>?
)
fun main() {
val adapter=Moshi.Builder().build().adapter<Foo>(Foo::class.java)
adapter.fromJson("{}")
}
与:
Exception in thread "main" com.squareup.moshi.JsonDataException: Required value 'bar' missing at $
at com.squareup.moshi.internal.Util.missingProperty(Util.java:605)
at com.squareup.moshi.problem.FooJsonAdapter.fromJson(FooJsonAdapter.kt:44)
at com.squareup.moshi.problem.FooJsonAdapter.fromJson(FooJsonAdapter.kt:16)
at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:40)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:43)
at com.squareup.moshi.problem.MoshiProblemKt.main(MoshiProblem.kt:13)
at com.squareup.moshi.problem.MoshiProblemKt.main(MoshiProblem.kt)
如何让它适用于列表?
这是一个显示问题的回购协议:https://github.com/ligi/moshi_problem
如果柱状图json值为null表示应该是这样
json
{
"bar": null
}
应该是
adapter.fromJson("{"bar":null}")
问题实际上是 moshi 中的这个错误:
https://github.com/square/moshi/issues/990
感谢@cketti 指出我的问题。
以下作品:
package com.squareup.moshi.problem
import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)
data class Foo(
val bar: String?
)
fun main() {
val adapter=Moshi.Builder().build().adapter<Foo>(Foo::class.java)
adapter.fromJson("{}")
}
但是当使用列表时它失败了:
package com.squareup.moshi.problem
import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)
data class Foo(
val bar: List<String>?
)
fun main() {
val adapter=Moshi.Builder().build().adapter<Foo>(Foo::class.java)
adapter.fromJson("{}")
}
与:
Exception in thread "main" com.squareup.moshi.JsonDataException: Required value 'bar' missing at $
at com.squareup.moshi.internal.Util.missingProperty(Util.java:605)
at com.squareup.moshi.problem.FooJsonAdapter.fromJson(FooJsonAdapter.kt:44)
at com.squareup.moshi.problem.FooJsonAdapter.fromJson(FooJsonAdapter.kt:16)
at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:40)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:43)
at com.squareup.moshi.problem.MoshiProblemKt.main(MoshiProblem.kt:13)
at com.squareup.moshi.problem.MoshiProblemKt.main(MoshiProblem.kt)
如何让它适用于列表? 这是一个显示问题的回购协议:https://github.com/ligi/moshi_problem
如果柱状图json值为null表示应该是这样
json
{
"bar": null
}
应该是
adapter.fromJson("{"bar":null}")
问题实际上是 moshi 中的这个错误:
https://github.com/square/moshi/issues/990
感谢@cketti 指出我的问题。