loopj JsonObject里面有JsonArray JsonObjects

时间:2016-07-08 18:40:38

标签: loopj

我有一个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

我很感激任何帮助.-我需要在单独的阵列中提取“温度”和humedad,因为后来我必须在MPAndroidChat中使用它来制作拖线图,一组参数的一个图表和其他参数的另一个图表

1 个答案:

答案 0 :(得分:0)

解决方案在这里:

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

我们有一个包含许多sub_objects的String,然后我们必须将它们放入数组或List中。

从以下解决方案: how to parse JSONArray in android