2013-05-11 8 views
20

Czy można przechowywać wiele różnych JSONObject s w jednym JSONArray? To jest struktura, którą chcę przechowywać w numerze JSONArray.Jak umieścić/uzyskać wiele JSONObjectów dla JSONArray?

[{"value1":1,"value2":900,"value3":1368349},{"value1":2,"value2":1900,"value3":136856},{"value1":3,"value2":600,"value3":136845}] 

Oto kod, gdzie jestem ustawienie JSONObject i umieszczenie go w JSONArray

if(somecondition) { 
    // putting values to json object 
    jsonObj.put("value1", 1); 
    jsonObj.put("value2", 900); 
    jsonObj.put("value3", 1368349); 
} 
for(int i=0;i<=jsonArray.length();i++){ 
    jsonArray.put(jsonObj); 
    appObj.setJsonAlarmArray(jsonArray); 
    // appObj is object of Application Class 
    editor= sharedPrefs.edit(); 
    editor.putString("key", jsonArray.toString()); 
    System.out.println(jsonArray.toString()); 
    editor.commit(); 
} 

przy użyciu tego kodu tylko ostatnią wartość, której mam ustawienia w JSON obiektu Override do wszystkich obiektów. Wszelkie sugestie, aby to osiągnąć?

+0

@dda dzięki za poprawienie mojego pytania. – PSK

Odpowiedz

27

znalazłem bardzo dobre połączenie do JSON. Here

Oto kod, aby dodać wiele JSONObjects do JSONArray.

JSONArray obj = new JSONArray(); 
    try { 
     for(int i = 0; i < 3; i++) { 
      // 1st object 
      JSONObject list1 = new JSONObject(); 
      list1.put("val1",i+1); 
      list1.put("val2",i+2); 
      list1.put("val3",i+3); 
      obj.put(list1); 
     } 
    } catch (JSONException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    Toast.makeText(MainActivity.this, ""+obj, Toast.LENGTH_LONG).show();   
+0

Próbowałem to samo, ale tylko ostatni obiekt Json dostaje dołączane wiele razy ...... nie wiem, co poszło nie tak – chopss

+0

jej do późna, ale czy zadeklarował JSONObject poza swoją pętlę for . @chopu – PSK

+0

dzięki za odpowiedź, ale już mam ....... dlaczego tak późno ???? – chopss

8

Po umieszczeniu wartości w obiekcie JSONObject, należy położyć obiekt JSONObject w gwiazdozbiorze JSONArray.

Coś takiego może:

jsonObj.put("value1", 1); 
jsonObj.put("value2", 900); 
jsonObj.put("value3", 1368349); 
jsonArray.put(jsonObj); 

Następnie należy utworzyć nowy JSONObject, włożyć do niej inne wartości i dodać go do JSONArray:

jsonObj.put("value1", 2); 
jsonObj.put("value2", 1900); 
jsonObj.put("value3", 136856); 
jsonArray.put(jsonObj); 
+0

Ustawiam wartości w JSONObject po kliknięciu przycisku. więc po kliknięciu przycisku drugiego czasu automatycznie ustawiane są wartości JSONObjects. @Ash – PSK

+0

@PSK Wygląda na to, że nie zrozumiałem właściwie pytania, czy możesz wyjaśnić nieco dalej, co próbujesz zrobić? – Ash

+0

Znalazłem bardzo dobry link do JSON. Dodałem moją odpowiedź @ Ash – PSK

Powiązane problemy