2015-07-01 28 views
1
價值
[ 
    { 
     "key":"key1", 
     "value":"key one value", 
     "description":"" 
    }, 
    { 
     "key":"key2", 
     "value":"key two value", 
     "description":"" 
    }, 
    { 
     "key":"key3", 
     "value":"key three value", 
     "description":"" 
    }, 
    { 
     "key":"key4", 
     "value":"key four value", 
     "description":"" 
    }, 
    { 
     "key":"key5", 
     "value":"key five value", 
     "description":"" 
    } 
] 

這以上是我的,我有,我把它變成一個JsonArray這樣變化JSON元素在javax.json.JsonArray

BufferedReader reader = Files.newBufferedReader(file, 
       Charset.defaultCharset()); 
JsonReader jsonReader = Json.createReader(reader); 
JsonArray array = jsonReader.readArray(); 

和工作的例子JSON文件我問題是我想訪問JsonArray並更改每個json元素的值部分,但無法執行此操作。 這個集合似乎無法提供任何json元素的值。 你知不知道我可以做到我要做的事? PS:對於使用其他收藏的建議也開放,但請教我爲什麼要選擇收藏。

回答

1

因爲你沒有提到你正在使用的JSON庫,你可以,如果你是使用JSON-lib的替換元素

public JSONArray element(int index, 
         Object value) 

如果您想更新的JSONObject的特定屬性使用element方法元素,你可以嘗試下面的東西

array.getJSONObject(0).put("key","new key value") 

請注意,我用硬編碼值0作爲演示目的。

+0

它是'javax.json'。 –

+0

好的,在這種情況下,JSONArray是不可變的。您必須從數組中讀取每個單獨的JSONObject,並以某種方式將其轉換爲JSONObjectBuilder,然後使用JSONArrayBuilder將它們打包到一個新數組中。是否有可能使用一些其他JSON庫,如傑克遜允許更好地綁定到Java POJO? –

+0

我可以使用其他一些JSON庫,但似乎有很多可供選擇的東西,我不知道應該選擇哪一個。你能否給我一個我應該使用的建議,並以最簡單的方式來實現這一點? – Gugg