2015-05-04 64 views
0

我正在使用JSON簡單的庫來解析Json格式。我怎樣才能追加一些JSONArray?對於例如考慮以下jsonJSON-簡單。附加到JSONArray

{ 
    "a": "b" 
    "features": [{/*some complex object*/}, {/*some complex object*/}] 
} 

我需要在features附加一個新條目。 我想創建這樣的功能: -

public void appendToList(JSONObject jsonObj, JSONObject toBeAppended){ 

    JSONArray arr = (JSONArray)jsonObj.get("features"); 

    //1) append the new feature 
    //2) update the jsonObj 
} 

如何實現上述代碼中的步驟1 & 2?

回答

3

你可以試試這個:

public static void main(String[] args) throws ParseException { 

    String jsonString = "{\"a\": \"b\",\"features\": [{\"feature1\": \"value1\"}, {\"feature2\": \"value2\"}]}"; 
    JSONParser parser = new JSONParser(); 
    JSONObject jsonObj = (JSONObject) parser.parse(jsonString); 

    JSONObject newJSON = new JSONObject(); 
    newJSON.put("feature3", "value3"); 

    appendToList(jsonObj, newJSON); 

    System.out.println(jsonObj); 
    } 


private static void appendToList(JSONObject jsonObj, JSONObject toBeAppended) { 

     JSONArray arr = (JSONArray) jsonObj.get("features");   
     arr.add(toBeAppended); 
    } 

這將滿足你的兩個要求。

+0

這不符合我上面提供的方法簽名。 – ishan3243

+0

不是創建一個新的'JSONObject'實例,而是使用'put'調用將方法中的第二個參數添加到'arr'中。 – asgs

+0

我編輯了我的答案以滿足您的要求。 –

0

通過獲取數組:jsonObj["features"],那麼你可以在陣列中分配給它作爲最後一個元素添加新的項目(jsonObj["features"].length是下一個免費的地方加入新的元素)

jsonObj["features"][jsonObj["features"].length] = toBeAppended; 

fiddle example

+0

OP在json-simple中尋求示例,而不是javascript。 – shahkalpesh

+0

好吧,10x澄清 – ItayB

+0

雖然這個源代碼可能會提供一個答案,幾個解釋的話會有利於當前和未來的讀者。 – Thom