2016-08-12 8 views
4

kann mir jemand helfen, i'am neu auf Java-ProgrammierungWie JSONArray Wert auf Java aktualisieren

Lassen Sie sagen, ich habe JSONArray mit diesen Daten unter:

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

Wie STATUSUPDATE-1 aktualisieren in IDSERV2

Wie STATUSUPDATE-2 in IDSERV aktualisieren 3

und wurde in einer Schleife versucht, die Daten

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 
} 
} 

kann mir jemand

+0

Sie könnten ersetzen mit einem Regex-Muster verwenden. – Olian04

+0

kannst du mich zum Beispiel @Olian leiten? – user3502930

+0

hat gerade eine Antwort gepostet. Werfen Sie einen Blick :) – Olian04

Antwort

1

ist der Code:

array ist Ihr 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); 
    } 
} 

Nun, wenn Sie drucken array dann können Sie Werte sehen geändert werden.

+0

Vielen Dank für diese Hilfe Kruti Fähre einfach und speichern Sie meinen Tag :) – user3502930

+1

Most Welcome :) –

+0

danke für die Antwort. Dieser Ansatz ändert jedoch den Wert von 'STATUSUPDATE' in' itemArr' richtig? die Werte im ursprünglichen JSONArray 'array' bleiben die gleichen wie vorher, oder? @KrutiPatel –

0

Mit regex und replaceAll helfen:

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

oben Das wird orten und ersetzen alle IDserv Felder.
Wenn Sie nur einen der IDSERV Felder suchen und ersetzen möchten, ändern Sie die \\d in [] und geben Sie den erwarteten Wert ein, um zwischen den geschweiften Klammern zu wechseln.
Beispiel: [1] finden und ersetzen alle Werte gleich 1.

EDIT1:
Ok, Sie haben gerade die Frage bearbeitet.

Mit dieser Regex können Sie ein bestimmtes IDSERV als Ziel auswählen und das Feld STATUSUPDATE ändern.

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

In der oben die Nummer ändern, was auch immer 1 Wert von IDserv Sie suchen möchten.

in Java, das wäre:

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

ah sehen ... Danke für Ihre Beratung – user3502930

4

JSONArray spezifischer Code:

Ausgabe

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"}] 

-Code

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); 
    } 
} 
Hier