Java 使用编号数组对json进行jackson反序列化
我有一个JSON字符串,如下所示:Java 使用编号数组对json进行jackson反序列化,java,arrays,json,list,jackson,Java,Arrays,Json,List,Jackson,我有一个JSON字符串,如下所示: { "1": { "entity_id":"1", "status":"canceled" }, "2": { "entity_id":"2", "status":"pending" } } ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPER
{
"1": {
"entity_id":"1",
"status":"canceled"
},
"2": {
"entity_id":"2",
"status":"pending"
}
}
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);
我正在努力找到反序列化时要使用的正确设置。我偶然发现上面的“1”
和“2”
id的映射
我的对象映射器如下所示:
{
"1": {
"entity_id":"1",
"status":"canceled"
},
"2": {
"entity_id":"2",
"status":"pending"
}
}
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类应该是什么样子的,有什么建议吗?解决方案是将json映射到一个映射中,如下所示:
Map<String, Object> map = mapper.readValue(message, new TypeReference<Map<String, Object>>() {});
Map Map=mapper.readValue(消息,new-TypeReference(){});
在实际的代码中,我用一个java类替换了Object,该类映射了entity_id和status等字段,这不是一个“编号数组”,而是一个“对象”——一个映射。您能对服务器做些什么吗?在这种情况下,服务器应该返回一个数组,而不是以数字作为键的对象。这是第三方集成。感谢您为我指明了正确的方向。我现在使用这一行来反序列化json:Map=mapper.readValue(消息,new-TypeReference(){});