2013-05-11 14 views
20

È possibile memorizzare più diversi JSONObject in un singolo JSONArray? Questa è la struttura, voglio memorizzare in un JSONArray.Come inserire/ottenere più JSONObjects in JSONArray?

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

Ecco il codice dove io pongo JSONObject e metterlo in un 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(); 
} 

Utilizzando questo codice solo l'ultimo valore, che io pongo in JSON oggetto Override a tutti gli oggetti. Qualche suggerimento per raggiungere questo?

+0

@dda, grazie per aver corretto la mia domanda. – PSK

risposta

27

ho trovato molto buon collegamento per JSON. Here

Ecco il codice per aggiungere più JSONObjects a 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

Ho provato la stessa cosa ma solo l'ultimo oggetto json viene aggiunto più volte ...... non so cosa sia andato storto – chopss

+0

è troppo tardi, ma hai dichiarato JSONObject all'esterno del tuo ciclo for . @chopu – PSK

+0

grazie per aver risposto ma l'ho già capito ....... perché così tardi ???? – chopss

8

Dopo aver inserito i valori in JSONObject, inserire il JSONObject in Starlight JSON dopo.

Qualcosa di simile forse:

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

Poi creare nuova JSONObject, mettere gli altri valori in esso e aggiungerlo alla JSONArray:

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

I am setting values ​​in JSONObject on Button click. quindi, quando si fa clic sul pulsante della seconda volta, i valori di JSONObjects vengono impostati automaticamente. @Ash – PSK

+0

@PSK Sembra che non ho capito bene la domanda, puoi spiegare un po 'più di quello che stai cercando di fare? – Ash

+0

Ho trovato un ottimo collegamento per JSON. Ho aggiunto la mia risposta. @ Ash – PSK