loopj

loopj JsonObject with inside JsonArray JsonObjects


I have a Webservice which give me back this:

{"result":[{"Id":"20","temperatura":"34","humedad":"29","Insertado":"2016-07-01 12:19:42"},{"Id":"21","temperatura":"34","humedad":"29","Insertado":"2016-07-01 12:34:42"},{"Id":"22","temperatura":"35","humedad":"28","Insertado":"2016-07-01 12:49:43"},{"Id":"23","temperatura":"35","humedad":"19","Insertado":"2016-07-01 13:29:06"},{"Id":"24","temperatura":"31","humedad":"18","Insertado":"2016-07-01 13:44:07"},{"Id":"25","temperatura":"33","humedad":"16","Insertado":"2016-07-01 13:59:10"}]}

This is an Object, which has and Array, and the array has many objects.

Here is my code. I am using loopj library-

private void CaptarParametros(String idObjeto) {

    AsyncHttpClient client = new AsyncHttpClient();

    RequestParams params = new RequestParams();
    params.put(UtilitiesGlobal.SENSOR_ID, idObjeto);

    RequestHandle post = client.post(this, SENSORS_URL, params, new JsonHttpResponseHandler() {
        @Override
        public void onStart() {
            // called before request is started
        }

        @TargetApi(Build.VERSION_CODES.KITKAT)
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
            // called when response HTTP status is "200 OK"
            JSONObject jsonobject = null;
            JSONObject dht11JSONbject = null;
            JSONArray dht11JSONarray = null;


            try {

                jsonobject = new JSONObject(String.valueOf(response));
                dht11JSONbject = jsonobject.getJSONObject("result");

                dht11JSONarray = new JSONArray(dht11JSONbject);
                JSONArray dht11 = dht11JSONarray.getJSONArray(0);
                for (int i = 0; i < dht11JSONarray.length(); i++) {
                    JSONObject item = dht11.getJSONObject(i);
                    String temperatura = item.getString("temperatura");
                    String humedad = item.getString("temperatura");

                //Log.i(UtilitiesGlobal.TAG, "onSuccess: loopj " + usuarioiJSONbject);
                Log.i(UtilitiesGlobal.TAG, "onSuccess: loopj " + temperatura + humedad);
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

But I get error like this:

org.json.JSONException: Value [{"Id":"19","temperatura":"35","humedad":"16","Insertado":"2016-07-01 12:19:24"}] at result of type org.json.JSONArray cannot be converted to JSONObject

I would appreciate any help.- I need to extract "temperature" and humedad" in separate arrays since later I have to use it in MPAndroidChat to make tow linechart, one chart for one set of parameters and another one for other parameters.


Solution

  • Solution is here:

     try {
    
                    jsonobject = new JSONObject(String.valueOf(response));
                    //dht11JSONbject = jsonobject.getJSONObject("result");
    
    
                    List<String> allNames = new ArrayList<String>();
                    JSONArray cast = jsonobject.getJSONArray("result");
                    for (int i=0; i<cast.length(); i++) {
                        JSONObject parametrosdht11 = cast.getJSONObject(i);
                        String temperatura = parametrosdht11.getString("temperatura");
                        String humedad = parametrosdht11.getString("humedad");
                        allNames.add(temperatura);
                        allNames.add(humedad);
    
                        //Log.i(UtilitiesGlobal.TAG, "onSuccess: loopj " + usuarioiJSONbject);
                        Log.i(UtilitiesGlobal.TAG, "onSuccess: loopj " +"temperatura: "+ temperatura +" humedad: " +humedad);
                    }
    
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
    

    We have a String with many sub_objects, then we have to put them into an array or List.

    Take the solution from: how to parse JSONArray in android