递归自定义 Gson 反序列化器
Recursive custom Gson deserializer
我需要创建一个自定义 Gson 反序列化器,当递归调用它时,它将进入对象并使用相同的概念反序列化它们
对于这个例子,让我们创建一个 JSON 对象:
{
"name": "Hello world!",
"foo": {
"bar": [12, 13, 14],
"type": "A"
}
}
然后 classes,对于这个演示有 2 classes MainOutputClass 从反序列化器调用,反序列化器应该从 foo
对象反序列化 SubClass在 JSON
至于 @ExposeAs()
这是为了告诉反序列化器要获取哪个 JSON 对象。
public class MainOutputClass {
@ExposeAs("name")
private String nameString;
@ExposeAs("foo")
private SubClass subClass;
}
最后subclass进行递归演示:
public class SubClass {
@ExposeAs("bar")
private List<Integer> bars;
@ExposeAs("type")
private String type;
}
我设法创建了一个反序列化器,可以完美地反序列化主要目标 class,但我似乎无法做到,因此它可以在非原始子目标上工作classes.
我知道这是一个非常奇怪的问题,但我找不到任何资源来解决这个问题。
感谢您的帮助,感谢您花时间阅读本文。
正如 Atmas 所指出的,我需要做的就是在字段中添加 @SerializedName
注释。
OP 正在寻找 @SerializedName 注释,它用于翻译名称,因为它应该存在于 JSON 格式与字段名称在 Java.
中
为了后代,如果你使用 Jackson 解析器,你可以使用 @JsonProperty 达到同样的效果。
When is the @JsonProperty property used and what is it used for?
我需要创建一个自定义 Gson 反序列化器,当递归调用它时,它将进入对象并使用相同的概念反序列化它们
对于这个例子,让我们创建一个 JSON 对象:
{
"name": "Hello world!",
"foo": {
"bar": [12, 13, 14],
"type": "A"
}
}
然后 classes,对于这个演示有 2 classes MainOutputClass 从反序列化器调用,反序列化器应该从 foo
对象反序列化 SubClass在 JSON
至于 @ExposeAs()
这是为了告诉反序列化器要获取哪个 JSON 对象。
public class MainOutputClass {
@ExposeAs("name")
private String nameString;
@ExposeAs("foo")
private SubClass subClass;
}
最后subclass进行递归演示:
public class SubClass {
@ExposeAs("bar")
private List<Integer> bars;
@ExposeAs("type")
private String type;
}
我设法创建了一个反序列化器,可以完美地反序列化主要目标 class,但我似乎无法做到,因此它可以在非原始子目标上工作classes.
我知道这是一个非常奇怪的问题,但我找不到任何资源来解决这个问题。 感谢您的帮助,感谢您花时间阅读本文。
正如 Atmas 所指出的,我需要做的就是在字段中添加 @SerializedName
注释。
OP 正在寻找 @SerializedName 注释,它用于翻译名称,因为它应该存在于 JSON 格式与字段名称在 Java.
中为了后代,如果你使用 Jackson 解析器,你可以使用 @JsonProperty 达到同样的效果。
When is the @JsonProperty property used and what is it used for?