【发布时间】:2012-12-04 12:44:57
【问题描述】:
我有一个这样的 JSON 字符串:
{
"1": {
"entity_id":"1",
"status":"canceled"
},
"2": {
"entity_id":"2",
"status":"pending"
}
}
我正在努力寻找反序列化时要使用的正确设置。我偶然发现了上面映射"1" 和"2" id 的样子。
我的对象映射器如下所示:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING, true);
mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
我尝试了各种类来将其映射到,但在使用以下行时它们都没有工作:
XXX jsonObject = mapper.readValue(json, XXX.class);
关于XXX 类应该是什么样子的任何建议?
【问题讨论】:
-
这不是“编号数组”,而是“对象”——地图。
-
你能对服务器做些什么吗?在这种情况下,服务器应该返回一个数组,而不是一个以数字为键的对象。
-
不幸的是,我根本无法更改服务器的响应。它是第 3 方集成。
-
感谢您为我指明正确的方向。我现在使用这一行来反序列化 json: Map
map = mapper.readValue(message, new TypeReference
标签: java arrays json list jackson