asus
asus

Reputation: 1759

Convert JSON Object of JSON objects and assign them to JSON Array in Android

This is my JSON file:

"charts": {
"system_voltage": {
"enabled": true,
"title": "System Voltage",
"xaxis_label": null,
"yaxis_label": null,
"y_min": 0,
"y_max": 18,
"status": false
},
"temperature1": {
"enabled": true,
"title": "Box1 Temp",
"xaxis_label": null,
"yaxis_label": null,
"y_min": -30,
"y_max": 50,
"status": false
},
"temperature2": {
"enabled": true,
"title": "Amb Temp",
"xaxis_label": null,
"yaxis_label": null,
"y_min": -30,
"y_max": 50,
"status": true
}, ...

my original approach was doing it this way inside the for loop:

JSONObject objSysVoltage = chartss.getJSONObject("system_voltage");

but what if I have 100 of them or more?

Each object inside charts is unique. How can I loop through a JSONObject and assign each object to a JSON array without doing it manually?

JSONObject chartss = objData.getJSONObject("charts");

for(int i = 0; i < chartss.length(); i++) {
   //what goes here??  
}

Upvotes: 1

Views: 61

Answers (2)

Mr.Kraken
Mr.Kraken

Reputation: 106

Use JsonObjectRequest and JSONArray

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
       @Override public void onResponse(JSONObject chartss) {
           try {
               JSONArray JA = chartss.getJSONArray("charts");
               String productArray[]= new String[JA.length()];
               for (int i=0; i<JA.length();i++){
                   productArray[i]=JA.getString(i);
                   Log.d("Result",JA.getString(i));

                   ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_dropdown_item_1line, productArray);
                   t2.setAdapter(dataAdapter);
                   String T1 = t2.getSelectedItem().toString();
                   t1.setText(T1);

               }

           } catch (JSONException e) {
               e.printStackTrace();
           }
       }
   }, new Response.ErrorListener() {

       @Override public void onErrorResponse(VolleyError error) {
           error.printStackTrace();
       }
   });
   rq.add(request);}

t2 is a spinner, and t1 is textview

t2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
   @Override
   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
       t1.setText(productArray[position]);
   }

   @Override
   public void onNothingSelected(AdapterView<?> parent) {

   }
});

Upvotes: 0

Abu Yousuf
Abu Yousuf

Reputation: 6107

Use keys() method to get all keys and get JSONObject form key.

Iterator<?> keys = chartss.keys();

while( keys.hasNext() ) {
  String key = (String)keys.next();
  if ( chartss.get(key) instanceof JSONObject ) {
      JSONObject josnObject = chartss.getJSONObject(key);
  }
}

Upvotes: 3

Related Questions