我有一个像这样的JSON字符串:
{
"123": {
"hi": {
"name": "John",
"phone": "12345"
}
},
"124": {
"hi": {
"name": "James",
"phone": "12345"
}
},
"125": {
"hi": {
"name": "Leo",
"phone": "12347"
}
}
}
JSON在外部订购:123, 124, 125
我只想获取最后一个字段的值(“125”: {...} ),但我不知道它名称,是自动生成的。什么是最好的方式?
我正在尝试映射到arrayList
JsonNodes
,但我找不到正确的方法。
答案 0 :(得分:1)
您也可以使用@JsonAnySetter
注释来执行此操作。请看下面的例子。 POJO课程:
class Node {
private Integer key = Integer.MIN_VALUE;
private JsonNode value;
@JsonAnySetter
public void set(String newKey, JsonNode newValue) {
if (Integer.valueOf(newKey) > key) {
value = newValue;
}
}
public JsonNode getValue() {
return value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
使用示例:
ObjectMapper mapper = new ObjectMapper();
Node node = mapper.readValue(json), Node.class);
System.out.println(node);
打印:
{"hi":{"name":"Leo","phone":"12347"}}
答案 1 :(得分:0)
我把JSON字符串放在JsonNode,数据和映射到NavigableMap。
NavigableMap<String, JsonNode> updates = mapper.readValue(data.traverse(), new TypeReference<TreeMap<String, JsonNode>>() {});
Entry<String, JsonNode> lastEntry = updates.lastEntry();
String lastUpdate = lastEntry.getValue().toString();