递归自定义Gson反序列化程序

rdlzhqv9  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(187)

我需要创建一个自定义的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目标类,但我似乎不能使它在非原语子类上工作。
我知道这是一个很奇怪的问题,但我找不到任何资源来解决这个问题。任何帮助都是感激不尽的,谢谢你花时间阅读本文。

zd287kbt

zd287kbt1#

OP正在寻找@SerializedName注解,该注解用于将名称转换为JSON格式,而不是Java中的字段名。
对于后代来说,如果使用Jackson解析器,则可以使用@JsonProperty达到相同的效果。
When is the @JsonProperty property used and what is it used for?

pcww981p

pcww981p2#

正如Atmas所指出的,我所需要做的就是向字段添加@SerializedName注解。

相关问题