java在将Json对象映射到POJO时处理未知Json属性
我的POJO看起来像这样:
public class MyClass {
public String sub;
public String iss;
public JsonObject customProperties;
..constructor, getters, setters..
}
一个Json对象看起来像这样:
{
"sub" : "value",
"iss" : "value2",
"unknown_property" : "value3",
"unknown_property_2" : {
"a" : 1,
"b" : 2
}
}
我想将Json对象映射到MyClass,在MyClass中,Json中的任何未知属性都被添加到“customProperties”字段中。(注意!我也可以使用“customProperties”作为地图,但请记住,对象是未知的,可能很复杂)
然后,MyClass对象将如下所示:
sub = "value"
iss = "value2"
customProperties = {"unknown_property":"value3","unknown_property_2":{"a":1,"b":2}}
我想我需要一个自定义反序列化程序,但我尝试过的东西不能满足我的需求,或者我可能缺乏理解/能力
我可以用谷歌。gson或org。json,而不是杰克逊
# 1 楼答案
这需要一个特殊的后处理类型适配器,它可以进行反序列化和收集未知属性。 我会像下面这样做
下面的接口是真实对象和类型适配器之间的桥梁。 这里没什么特别的
现在,您可以使用以下映射来实现上述接口
请注意,如果出于任何原因无法更改映射,您仍然可以调整以下类型适配器来实现此目的:
现在一次使用它:
然后输出如下:
# 2 楼答案
您可以使用JSON java来实现这一点