2015-06-29 55 views
2

我有一個輸入JSON節點如下如何將JsonNode映射到對象的ArrayList

"headers" : { 
    "name1" : "value1", 
    "name2" : "value2" 
} 

我的Java類,如下所示:

public class OptionalHeader{ 
     private String name; 
     private String value; 
     public OptionalHeader() { 
      super(); 
     } 
     public OptionalHeader(String name, String value) { 
      this.name = name; 
      this.value = value; 
     } 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getValue() { 
      return value; 
     } 
     public void setValue(String value) { 
      this.value = value; 
     } 
    } 

我想從JsonNode創建如下所示的OptionalHeader的arrayList。

List<OptionalHeader> optionalHeaders = new ArrayList<OptionalHeader>(); 

任何幫助,將不勝感激。謝謝:)

+0

這是不完整的JSON。請發佈完整的東西。 –

回答

0

傑克遜映射器是那裏可以映射Java對象從/到JSON對象。 您可以從here獲取Jackson API。 嘗試將您的JSON字符串保存到文件中。 'headers.json'。 傑克遜提供了一個ObjectMapper類,你可以使用它的readValue(File file, Class class)方法從JSON像獲取Java對象: -

ObjectMapper mapper = new ObjectMapper(); OptionalHeader optHeader= mapper.readValue(new File("c:\\headers.json"), OptionalHeader .class);

您可以使用相同的鏈接,獲取文檔&閱讀更多關於它。

0

感謝所有答覆:)

我所需的JsonNode經由含有key->value對以轉換成一個ArrayList<OptionalHeader> REST請求到來,見所討論的OptionalHeader類。

終於做到了使用下列內容:

(在我的POJO得到它作爲JsonNode)通過REST請求到來。我在二傳手中使用。

public void setOptHeaders(JsonNode optHeaders) throws JsonParseException, JsonMappingException, IOException { 
    this.optHeaders = optHeaders; 
    List<OptionalHeader> allHeaders = new ArrayList<OptionalHeader>(); 
    Iterator<Entry<String, JsonNode>> nodeIterator = optHeaders.fields(); 
    while (nodeIterator.hasNext()) { 
     Map.Entry<String, JsonNode> entry = (Map.Entry<String, JsonNode>) nodeIterator.next(); 
     OptionalHeader header = new OptionalHeader(entry.getKey(),entry.getValue().asText()); 
     allHeaders.add(header); 

    } 
    optionalEmailHeaders.addAll(allHeaders); 
} 

然後在getter中將其轉換回來。

public JsonNode getOptHeaders() { 
    final ObjectMapper mapper = new ObjectMapper(); 
    final Map<String, String> map = new HashMap<String, String>(); 
    for (final OptionalHeader data: optionalEmailHeaders) 
     map.put(data.getName(), data.getValue()); 
    optHeaders = mapper.valueToTree(map); 
    return optHeaders; 
}