2014-02-20 40 views
3


我需要從JsonObjects的java.util.List中創建一個javax.json.JsonArray對象(Java EE 7 API)。 以前,使用JSON API,當我用做它用簡單:從列表創建JsonArray

JSONArray jsonArray = new JSONArray(list); 

但我可以看到有一個在javax.json.JsonArray沒有等價的構造。 有沒有一個簡單的方法(除了瀏覽所有列表)來做到這一點?
謝謝

+1

javadoc包含示例... – fge

+0

本例中的list是什麼? – Bex

+0

已經選中。但Javadoc包含以下示例:JsonArray value = Json.createArrayBuilder() .add(Json.createObjectBuilder() .add(「type」,「home」) .add(「number」,「212 555-1234」 )) .add(Json.createObjectBuilder() .add(「type」,「fax」) .add(「number」,「646 555-4567」)) .build();這不是我所問 - 我已經有一個列表 user2824073

回答

9

不幸的是,標準的JsonArrayBuilder不會將列表作爲輸入。所以你需要遍歷列表。

我不知道你的列表的樣子,但你可以做出這樣一個功能:

public JsonArray createJsonArrayFromList(List<Person> list) { 
    JsonArray jsonArray = Json.createArrayBuilder(); 
    for(Person person : list) { 
     jsonArray.add(Json.createObjectBuilder() 
      .add("firstname", person.getFirstName()) 
      .add("lastname", person.getLastName())); 
    } 
    jsonArray.build(); 
    return jsonArray; 
} 
+0

謝謝。看起來這是做到這一點的唯一方法。 – user2824073

0

如果有人在如何與Java 8流做到這一點interessted。相同的代碼片段:

public JsonArray createJsonArrayFromList(List<Person> list) { 
    JsonArray jsonArray = Json.createArrayBuilder(); 
    list.stream().forEach(person -> jsonArray.add(Json.createObjectBuilder() 
      .add("firstname", person.getFirstName()) 
      .add("lastname", person.getLastName()))); 
    jsonArray.build(); 
    return jsonArray; 
}