带有内部 JsonArray JsonObjects 的 loopj JsonObject

loopj JsonObject with inside JsonArray JsonObjects

我有一个 Web 服务返回给我:

{"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"}]}

这是一个Object,里面有Array,数组里面有很多对象

这是我的代码。我正在使用 loopj 库-

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();
            }
        }

但是我得到这样的错误:

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

如果有任何帮助,我将不胜感激。- 我需要在单独的数组中提取 "temperature" 和 humedad",因为后来我必须在 MPAndroidChat 中使用它来制作拖线图,一个图表用于一组参数,另一个图表一个用于其他参数。

解决方案在这里:

 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();
            }
        }

我们有一个String有很多sub_objects,那么我们要把它们放到一个数组或者List中。

从中获取解决方案: how to parse JSONArray in android