将 json 解析为 dto 时如何忽略换行元素

How to ignore wrap element when parse json to dto

我有一个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 值包装器

您需要将 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
}