[英]Recursive custom Gson deserializer
我需要创建一个自定义 Gson 反序列化器,当递归调用 go 成对象并使用相同的概念反序列化它们时
对于这个例子,让我们创建一个 JSON object:
{
"name": "Hello world!",
"foo": {
"bar": [12, 13, 14],
"type": "A"
}
}
然后是类,对于这个演示,有 2 个类 MainOutputClass 从反序列化器调用,反序列化器应该从 JSON 中的foo
object 反序列化子类
至于@ExposeAs()
,这是为了告诉反序列化器使用哪个 JSON object。
public class MainOutputClass {
@ExposeAs("name")
private String nameString;
@ExposeAs("foo")
private SubClass subClass;
}
最后是递归演示的子类:
public class SubClass {
@ExposeAs("bar")
private List<Integer> bars;
@ExposeAs("type")
private String type;
}
我设法创建了一个反序列化器,可以完美地反序列化主要目标 class,但我似乎无法让它适用于非原始子类。
我知道这是一个非常奇怪的问题,但我找不到任何资源来解决这个问题。 感谢您提供任何帮助,感谢您抽出宝贵时间阅读本文。
OP 正在寻找 @SerializedName 注释,该注释用于翻译名称,因为它应该存在于 JSON 格式中,而不是字段名称在 Java 中。
对于后代,如果您使用 Jackson 解析器,您可以使用 @JsonProperty 达到相同的效果。
正如Atmas所指出的,我需要做的就是在字段中添加@SerializedName
注释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.