是否可以反序列化JSON结构,以便将该结构的各个部分收集到嵌套的子对象中?
给定这个JSON结构
{
"root_field1": "This field will be in root",
"root_field2": "This field will be in root",
"child_field1": "This field will be in a child object",
"child_field2": 123
}
是否可以使用JSONTransformSerializer
(或其他方法)将上述json反序列化为:
@Serializable
data class Root(
@SerialName("root_field1")
val field1: String,
@SerialName("root_field2")
val field2: String,
val child: Child
)
@Serializable
data class Child(
@SerialName("child_field1")
val field1: String,
@SerialName("child_field2")
val field2: Int
)
我尝试在Root
上使用JsonTransformingSerializer
,但是由于找不到child
元素,这只会导致异常。
我还尝试将child
设置为@Transient
,希望这能让我绕过这个问题,但是JsonTransformingSerializer
仍然需要KSerializer
作为其底层类的输入,所以这不起作用。
1条答案
按热度按时间cgh8pdjw1#
事实证明,通过以下面的方式组合
JsonTransformingSerializer<Root>
和自定义KSerializer<Root>
(我以前没有想到过),这是很容易做到的:自定义KSerializer将如下所示