我正在尝试使用此字段控制POJO
private ObjectNode inner_data;
这里的想法是,任何未被识别的东西都放在这个对象中,并转换为下面的内容:
{
...
"inner_data": {
...
}
...
}
目前我正在使用这种方法:
@JsonAnySetter
private void setUnknownProperty(String key, JsonNode value) {
data.set(key, value);
}
哪个工作做得很好。 然而当我在JSON中使用inner_data
字段时出现问题 - 在这种情况下,杰克逊可能会调用setUnknownProperty
几个字段,然后简单地覆盖使用JSON中的inner_data
对象,意味着我丢失了字段。
有没有办法让杰克逊在做任何其他事情之前将JSON转换为inner_data
对象?那么setUnknownProperty
总是会在初始人口之后写入吗?
修改:我相信一个解决方案只是覆盖setInnerData
并告诉它只添加到现有的inner_data
...但我想要更优雅的东西
答案 0 :(得分:0)
我选择了我建议的解决方案作为原始问题中的解决方法:
我只是将setInnerData
方法设置为仅与其现有值合并,以避免破坏旧值。
我将此标记为已解决,但如果有任何人有任何更好的事情可以随意扔进去,我会切换接受的答案。