我有个儿子,如下所示:
{“键”:{“a”:“aValue”}
"key“可以包含json对象和json数组。我创建了以下java对象来映射这个json:
Class Output {
private List<DummyObject> key;
// setter, getting ommited
}
Class DummyObject {
private String a;
}所以,如果json是
{“键”:{“a”:“val1”},{"a":"val2"}}
输出类的"key“属性应该包含一个由2个对象组成的列表,当json是
{“键”:{“a”:“val1”}
"key“应该只包含一个对象的列表。
我尝试过使用反序列化器,但它不起作用。另外,我不想自己对DummyObject进行反序列化。
发布于 2017-08-28 16:55:33
尝试启用Jackson反序列化功能列阵。
final ObjectMapper mapper = new ObjectMapper()
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);发布于 2017-08-28 16:56:10
考虑{"key":[{"a":"val1"},{"a":"val2"}]}
问题不在你的模型与输出;
Class Output {
private List<DummyObject> key;
// setter, getting ommited
}因为这将key表示为json数组。
但是,您可能需要更新DummyObject:
Class DummyObject {
private String a;
}至
Class DummyObject {
private Map<String,String> a;
}因为{"a":"val1"}不是DummyObject甚至String a的有效表示。
此外,正如@tima所指出的,对于"key“的不同长度的JSONArray,您必须看看如何使用让Jackson用一个元素将单个JSON对象解释为数组
你问题的最后一条是:
另外,我不想自己去序列化DummyObject。
您可以尝试更新输出模型(从性能角度不确定这是否有益)如下:
Class Output {
private List<Map<String, String>> key;
// setter, getting ommited
}https://stackoverflow.com/questions/45923592
复制相似问题