2016-08-12 19 views
4

誰能幫助我,我'新的關於Java編程如何更新關於java JSONArray值

讓說,我有JSONArray下面這些數據:

[{ 
    "STATUSUPDATE": 0, 
    "IDSERV": "2" 
}, { 
    "STATUSUPDATE": 0, 
    "IDSERV": "3" 
}, { 
    "STATUSUPDATE": 0, 
    "IDSERV": "1" 
}] 

如何更新STATUSUPDATE1IDSERV2

如何IDSERV3

更新 STATUSUPDATE到個

,並試圖循環中的數據

for (int i=0; i < array.length; i++){ 
JSONObject itemArr = (JSONObject)array.get(j); 
if(itemArr.get("IDSERV").equals(2)){ 
//should be itemArr.set(with new val) 
//but method *set* can cal; only on JSONArray not an JSONObject 
//and looping the next one 
} 
} 

誰能幫助我

+0

您可以使用替換正則表達式模式。 – Olian04

+0

可以指導我看@Olian的例子嗎? – user3502930

+0

剛發佈了一個答案。看看:) – Olian04

回答

1

下面是代碼:

array是你JSONArray

for (int i=0; i < array.length(); i++){ 
    JSONObject itemArr = (JSONObject)arr.get(i); 
    if(itemArr.get("IDSERV").getAsString().equals("2")){ 
     itemArr.put("STATUSUPDATE", 1); 
    }else if(itemArr.get("IDSERV").getAsString().equals("3")){ 
     itemArr.put("STATUSUPDATE", 2); 
    } 
} 

現在,如果打印array然後就可以看到值的變化。

+0

感謝您的幫助克魯蒂渡輪簡單和拯救我的一天:) – user3502930

+1

最歡迎:) –

+0

感謝您的答案。但是,這種方法會修改'itemArr'中'STATUSUPDATE'的值嗎?原始JSONArray'array'中的值將保持與之前相同,對嗎? @KrutiPatel –

0

使用正則表達式的replaceAll

String json = ... 
json.replaceAll("(?<=\"IDSERV\":\")\\d*(?=\")", new value); 

以上會查找並替換所有IDSERV字段。
如果您只想查找並替換IDSERV字段中的一個,請將\\d更改爲[],並將期望值置於大括號之間進行交換。
例如:[1]將查找並替換所有等於1的值。

EDIT1:
好吧,你剛纔編輯的問題。

該正則表達式允許您定位特定的IDSERV並更改其STATUSUPDATE字段。

(?<=:)\d*(?=,"IDSERV":"1") 

在上面,改號1你要尋找什麼IDSERV的價值。

在java中,這將是:

String json = ... 
json.replaceAll("(?<=:)\\d*(?=,\"IDSERV\":\"1\")", new value); 
+0

啊見...謝謝你的建議 – user3502930

4
JSONArray

特定代碼:

輸出

Initial array : [{"STATUSUPDATE":0,"IDSERV":"2"},{"STATUSUPDATE":0,"IDSERV":"3"},{"STATUSUPDATE":0,"IDSERV":"1"}] 
Output array : [{"STATUSUPDATE":"1","IDSERV":"2"},{"STATUSUPDATE":"2","IDSERV":"3"},{"STATUSUPDATE":0,"IDSERV":"1"}] 

代碼

public class Test { 
    public static void main(String[] args) throws JSONException { 
     JSONArray array = new JSONArray("[{\"STATUSUPDATE\":0,\"IDSERV\":\"2\"},{\"STATUSUPDATE\":0,\"IDSERV\":\"3\"},{\"STATUSUPDATE\":0,\"IDSERV\":\"1\"}]"); 
     System.out.println("Initial array : " + array); 

     for (int i=0; i < array.length(); i++){ 
      JSONObject jsonObject = new JSONObject(array.get(i).toString()); 
      if(jsonObject.get("IDSERV").equals("2")) { 
       jsonObject.put("STATUSUPDATE", "1"); 
       array.put(i, jsonObject); 
      } 
      else if(jsonObject.get("IDSERV").equals("3")) { 
       jsonObject.put("STATUSUPDATE", "2"); 
       array.put(i, jsonObject); 
      } 
     } 

     System.out.println("Output array : " + array); 
    } 
}