2014-02-18 99 views
1

的傑克遜JSON數組列表我有一個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,但我找不到正確的方法。

+0

恐怕它的名字是 「125」,這是不是一個數組 –

+0

什麼確切性質字段名稱(「123」等)有?你的問題是,這是一個JSON對象的字段沒有排序。所以,除非你的姓名上加了一些命令(例如按字典順序),否則就沒有必要談論最後一個字段。 –

+0

嗨菲利普。 Json按照我寫的123,124,125,......的方式進行外部命令......我只想得到最後一個字段。 –

回答

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(); 
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"}}