我需要创建一个自定义的Gson反序列化器,当递归调用该反序列化器时,它将进入对象并使用相同的概念对其进行反序列化
在本例中,我们创建一个JSON对象:
{
"name": "Hello world!",
"foo": {
"bar": [12, 13, 14],
"type": "A"
}
}
然后是类,对于本演示,有2个类MainOutputClass从反序列化程序中调用,反序列化程序应反序列化JSON中foo
对象SubClass
对于@ExposeAs()
,这是为了告诉反序列化器要采用哪个JSON对象。
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;
}
我设法创建了一个反序列化器,它可以完美地反序列化Main目标类,但我似乎不能使它在非原语子类上工作。
我知道这是一个很奇怪的问题,但我找不到任何资源来解决这个问题。任何帮助都是感激不尽的,谢谢你花时间阅读本文。
2条答案
按热度按时间zd287kbt1#
OP正在寻找@SerializedName注解,该注解用于将名称转换为JSON格式,而不是Java中的字段名。
对于后代来说,如果使用Jackson解析器,则可以使用@JsonProperty达到相同的效果。
When is the @JsonProperty property used and what is it used for?
pcww981p2#
正如Atmas所指出的,我所需要做的就是向字段添加
@SerializedName
注解。