28

Is it possible to store multiple different JSONObjects into a single JSONArray? This is the structure, I want to store in a JSONArray.

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

Here's the code where I am setting JSONObject and putting it into a 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();
}

Using this code only the last value, which I am setting in JSON object Override to all objects. Any suggestions to achieve this?

0

3 Answers 3

44

I found very good link for JSON: http://code.google.com/p/json-simple/wiki/EncodingExamples#Example_1-1_-_Encode_a_JSON_object

Here's code to add multiple JSONObjects to 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();
Sign up to request clarification or add additional context in comments.

2 Comments

I tried the same thing but only the last json object gets appended multiple times......i don't know what went wrong
its to late, but have you declare JSONObject outside to your for loop. @chopu
12

Once you have put the values into the JSONObject then put the JSONObject into the JSONArray staright after.

Something like this maybe:

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

Then create new JSONObject, put the other values into it and add it to the JSONArray:

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

4 Comments

I am setting values in JSONObject on Button click. so when second time button is clicked the values of JSONObjects automatically set. @Ash
@PSK It looks like I have not understood the question properly, can you explain a bit further of what you are trying to do?
I have found very good link for JSON. I have added my answer.@Ash
@PSK So you have answered your own question now, because if you have you should accept it.
0

From android API Level 19, when I want to instance JSONArray object I put JSONObject directly as parameter like below:

JSONArray jsonArray=new JSONArray(jsonObject);

JSONArray has constructor to accept object.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.