如何解析这两种类型的响应:
{
"x" : "some_string"
}
和
{
"x" : { }
}
进入一个看起来像这样的数据类:
@Serializable
data class SomeClass {
@SerialName("x")
val x : String?
}
如何解析这两种类型的响应:
{
"x" : "some_string"
}
和
{
"x" : { }
}
进入一个看起来像这样的数据类:
@Serializable
data class SomeClass {
@SerialName("x")
val x : String?
}
这只能通过编写应用到该x
字段的自定义序列化程序来工作。
String
是原语( JsonPrimitive
)。{}
是一个对象( JsonObject
)。您似乎在这里编码null
为空JsonObject
,并且在设置值时,您将其编码为JsonPrimitive
.
如果这是一个严格的要求,您需要编写一个自定义序列化程序,将一个空对象转换为null
,这应该是相当简单的。如果此对象包含任何键,您可能还希望序列化失败。
但是,惯用的方法是将其简单地编码为null
,在这种情况下,默认的kotlinx.serialization
序列化程序将起作用;它处理可为空的类型。
我认为你可以这样做:
@Serializable
data class Foo {
@SerialName("bar")
val bar: String? = null
}
虽然我可能是错的......
来源:GitHub问题