繁体   English   中英

递归自定义 Gson 解串器

[英]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 达到相同的效果。

何时使用 @JsonProperty 属性以及它的用途是什么?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM