我有一个json响应如下
{
"event_date": "2014-10-10T19:18:04+05:30",
"company": "b2c",
"entity_id": 7,
"attributes": {
"id": 7,
"order_id": 43,
"status": "dispatched",
**"quantities": [
[{"idno1":2},{"idno2":4}]
]**
}
}
这里我没有任何线索可以将其转换为java对象,因为它具有的键值对的数量会有所不同,即 key是第一个元素的idno1,值是2,另一个键是idno2,值是4,所以这里的两个键值都是变化的,这里面是一个数组里面的数量,这也是我的json里面。
请指导我如何使用带有ObjectMapper的jackson API在java REST API中实现这一点。
非常感谢您的支持!!!!
答案 0 :(得分:0)
你确定你的quatities对象有两个方括号"quantities":[[{"idno1":2},{"idno2":4}]]
吗?然后这意味着它的数组或数组。然后你可以创建像
class Attribute{
int id;
@JsonProperty("order_id")
int orderId;
String status;
List<List<Map<String, Integer>>> quantities;
//Getters & Setters
}
class Event {
@JsonProperty("event_date")
Date eventDate;
String company;
@JsonProperty("entity_id")
int entityId;
Attribute attributes;
//Getters & Setters
}
现在为你的json,你可以直接解析像
String json = "{\"event_date\":\"2014-10-10T19:18:04+05:30\",\"company\":\"b2c\",\"entity_id\":7,\"attributes\":{\"id\":7,\"order_id\":43,\"status\":\"dispatched\",\"quantities\":[[{\"idno1\":2},{\"idno2\":4}]]}}";
ObjectMapper mapper = new ObjectMapper();
Event eventObj = mapper.readValue(json, Event.class);
System.out.println(eventObj);
如果您不想要额外的括号,可以将数量对象更改为List<Map<String, Integer>> quantities
,或者甚至缩小为Map<String, Integer> quantities