【发布时间】:2019-06-27 13:56:34
【问题描述】:
我正在尝试使用 Jackson 将特定结构的 JSON 反序列化为 Java 类。 我有几个这样的课程:
class A {
private int number1;
private List<X> list1;
private int number2;
}
class X {
private String field1;
private double value1;
}
class B {
private String name2;
private List<Y> list2;
}
class Y {
private String field2;
}
我从如下外部系统获取 JSON:
{
"number1": 1,
"list1": {
"elements": [{
"field1": "Field 1 value 1",
"value1": 2.2
}, {
"field1": "Field 1 value 2"
}]
},
"number2": 2,
}
{
"name2": "Name 2",
"list2": {
"elements": [{
"field2": "Field 2 value 1"
}]
}
}
我想要的只是编写一个自定义反序列化器,它可以以一种通用的方式摆脱这个 元素 级别(我的意思是为所有类都有一个反序列化器)。 是否有任何简单的方法可以扩展 StdDeserializer 来实现这一点,或者我必须使用我的自定义算法编写一个全新的反序列化器?
【问题讨论】:
-
你知道
name1有多少别名吗? -
我不明白,它有什么变化?这只是一个技术问题。
-
我们可以通过自定义反序列化器以外的简单方式来实现
-
一般来说,这些 JSON 可以有任何结构,我更新了上面的示例。有一件事是肯定的,集合将像这样发送: "collection_name": { "elements": [{ ... }] } 我正试图摆脱这个 elements 级别。