【发布时间】:2020-12-07 18:46:55
【问题描述】:
我正在反序列化一个 JSON 数据结构,如下面的 GSON 示例:
{
"id": 1,
"data": [
{
"value": 2
},
{
"value": 2
}
]
}
此 JSON 映射到以下类:
class Element {
Integer id;
List<SubElement> data;
...
}
class SubElement {
Integer id;
Integer value;
...
}
我希望能够在反序列化时使用 GSON 填充基于父 id 字段的 SubElement 对象的字段 id。
这样做的目的是我在我的应用程序的几个部分收到这种 JSON,例如我想省略这种代码:
child.setId(parent.getId());
我尝试实现自定义反序列化器JsonDeserializer<SubElement>,但我无权访问根元素,因此无权访问id。
有没有办法进行这种类型的自定义反序列化?还是我应该继续使用Reflection 实现某种解决方案,例如遍历整个对象以寻找感兴趣的领域并相应地更新它?
我正在寻找一种通用解决方案,它可能对缺少id 的其他嵌套对象有效。
【问题讨论】: