我正在用Jackson解析一些json。这个json的片段如下:
},
"1/1/0": {
"event": "status",
"name": "Alarm Status",
"type": "Alarm",
"location": "Hall"
},
"1/1/1": {
"event": "status",
"name": "Smoke Alarm Status",
"type": "Alarm",
"location": "Hall"
},
我很高兴能够为每个对象提取数据,但我很难获得这个'名称'为每个对象。在上面的例子中,这将是' 1/1/0'和' 1/1 / 1'。我是按照以下方式这样做的:
final JsonNode node = parser.parseToNode(configJson);
final JsonNode sensorsChild = node.get("sensors");
for (JsonNode root : sensorsChild) {
final String event = root.get("event").asText();
final String name = root.get("name").asText();
final String type = root.get("type").asText();
final String location = root.get("location").asText();
}
我想在for循环中使用另一行,如:
final String id = root.getNodeFieldName();
会产生' 1/1 / 0'和' 1/1 / 1'分别。感谢
答案 0 :(得分:1)
您可以执行类似的操作,遍历根节点以分别通过嵌套的while循环和for循环获取所需的关键字段('1/1/0'
和'1/1/1'
)和每个对象的数据
final JsonNode node = parser.parseToNode(configJson);
for (JsonNode root : node) {
Iterator<String> itr = root.getFieldNames();
while (itr.hasNext()) { //to get the key fields
String key_field = itr.next();
}
for (JsonNode n : node.get("sensors")) { //to get each object
final String event = root.get("event").asText();
final String name = root.get("name").asText();
final String type = root.get("type").asText();
final String location = root.get("location").asText();
}
}
如果你使用json映射的pojo类在使用jackson库时执行这些操作会更容易。