0

如何解析这两种类型的响应:

{
"x" : "some_string"
}

{
"x" : { } 
}

进入一个看起来像这样的数据类:

@Serializable
data class SomeClass {
  
   @SerialName("x")
   val x : String?
}
4

2 回答 2

1

这只能通过编写应用到该x字段的自定义序列化程序来工作。

String原语( JsonPrimitive)。{}是一个对象( JsonObject)。您似乎在这里编码null为空JsonObject,并且在设置值时,您将其编码为JsonPrimitive.

如果这是一个严格的要求,您需要编写一个自定义序列化程序,将一个空对象转换为null,这应该是相当简单的。如果此对象包含任何键,您可能还希望序列化失败。

但是,惯用的方法是将其简单地编码为null,在这种情况下,默认的kotlinx.serialization序列化程序将起作用;它处理可为空的类型。

于 2021-12-08T14:06:47.490 回答
-1

我认为你可以这样做:

@Serializable
data class Foo {
   @SerialName("bar")
   val bar: String? = null
}

虽然我可能是错的......

来源:GitHub问题

于 2021-12-05T19:29:31.633 回答