[英]Convert json array to java object with different object element in array using jackson
[英]Spring Jackson convert json object to java array
我有一个像下面的json:
{“ key”:{“ a”:“ aValue”}}
“键”可以包含json对象以及json数组。 我创建了以下java对象来映射此json:
Class Output {
private List<DummyObject> key;
// setter, getting ommited
}
Class DummyObject {
private String a;
}
所以,我想如果json是
{“ key”:[{“ a”:“ val1”},{“ a”:“ val2”}]}
Output类的“ key”属性应包含2个对象的列表,并且当json为
{“ key”:{“ a”:“ val1”}}
“键”应仅包含1个对象的列表。
我尝试使用反序列化器,但是它不起作用。 另外,我也不想自己反序列化DummyObject
。
尝试启用Jackson的反序列化功能ACCEPT_SINGLE_VALUE_AS_ARRAY 。
final ObjectMapper mapper = new ObjectMapper()
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
考虑到{"key":[{"a":"val1"},{"a":"val2"}]}
问题不在输出模型中;
Class Output {
private List<DummyObject> key;
// setter, getting ommited
}
由于此key
将该key
表示为json数组。
但是您可能想要更新DummyObject:
Class DummyObject {
private String a;
}
至
Class DummyObject {
private Map<String,String> a;
}
由于{“ a”:“ val1”}不是DummyObject
甚至String a
的有效表示。
另外,如@tima所指出的,对于“键”的JSONArray长度不同,您必须了解如何使Jackson将单个JSON对象解释为具有一个元素的数组
您问题的最后一句:
另外,我也不想自己反序列化DummyObject。
您可以尝试更新输出模型(从性能角度来看不确定是否会有所帮助),如下所示:
Class Output {
private List<Map<String, String>> key;
// setter, getting ommited
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.