解析json到dto时如何忽略wrap元素

时间:2015-05-06 06:13:33

标签: java json parsing jackson

我有像这样的json

{
 "135": {
  "id": "135",
  "name": "My Awesome Washing Machine!",
  "powerswitch": {
   "available": "true",
   "state": "on",
   "reachable": "true",
   "locked": "false"
  },
  "reference": {
   "id": "4",
   "name": "Lave-linge",
   "category_id":"2"
 }
},
 "491": {
  "id": "491",
  "name": "My Fridge",
  "powerswitch": {
   "available": "true",
   "state": "on",
   "reachable": "false",
   "locked": "false"
  },
  "reference": {
   "id": "1",
   "name": "Réfrigérateur",
   "category_id":"1"
  }
 }
}

这是我的dto:

public class Device {
    private String id;
    private String name;
    private DevicePowerswitch powerswitch;
    private DeviceReference reference;
    //getter, setter
}

问题是如何将json解析为设备列表。 请注意,上面的json中有一个非静态id值包装器。

1 个答案:

答案 0 :(得分:0)

您需要将JSON解析为JsonNode,然后迭代子进程。然后,您可以使用ObjectMapper将设备拉出的节点映射到设备实例。

ObjectMapper mapper = new ObjectMapper();
final JsonNode jsonNode = mapper.readTree(JSON);
for (JsonNode node : jsonNode)
{
    final Device device = mapper.convertValue(node,
                                              Device.class);
    // do something with the device
}