android - 数组无法转换为 JSONObject Android

标签 android json

我正在尝试在 Android 中解析 JSON 代码,但在解析时出现了上述错误。

这是我要解析的 JSON:

 [{"value":"91.84","timestamp":"2012-10-11 14:12:13"}]

这是我解析它的方式:

InputStream inputStream = null;
String result = null;
HttpResponse response;
BufferedReader reader;
JSONObject jObject;
JSONArray jArray = null;
String aJsonString1;
String aJsonString2;

public class ReadJSON extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... url) {

        DefaultHttpClient   httpclient = new DefaultHttpClient(new BasicHttpParams());
        HttpPost httppost = new HttpPost("url is written here");
        // Depends on your web service
        httppost.setHeader("Content-type", "application/json");
        try {
            response = httpclient.execute(httppost);      
            HttpEntity entity = response.getEntity();
            inputStream = entity.getContent();
            reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;

        while ((line = reader.readLine()) != null)
            {
                sb.append(line + "\n");
            }



        jObject = new JSONObject(sb.substring(0));



        for (int i=0; i < jArray.length(); i++)
        {
            JSONObject oneObject = jArray.getJSONObject(i);
            // Pulling items from the array
            String oneObjectsItem = oneObject.getString("value");
            String oneObjectsItem2 = oneObject.getString("timestamp");
        }


        aJsonString1 = jObject.getString("value");
        aJsonString2 = jObject.getString("timestamp");

        return aJsonString1;

        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
            Log.e("JSON",e.getMessage() + "  " + e);
        }           
        return null; // Error case

    }

    protected void onPostExecute(String result) {
        textView.setText(aJsonString1);

        if(aJsonString1==null){
            textView.setText("nothing to show");
        }

    }

}

那么,你能看出这里的问题吗?有什么问题吗?

最佳答案

你的 json 是 JSONArray 而不是 JSONObject

改变你的代码,

json 有多个 JSONObject ,那么使用下面的代码

JSONArray jsonArray = new JSONArray(sb);

 for (int i=0; i < jsonArray.length(); i++)
    {
        JSONObject oneObject = jsonArray.getJSONObject(i);
        // Pulling items from the array
        String oneObjectsItem = oneObject.getString("value");
        String oneObjectsItem2 = oneObject.getString("timestamp");
    }

假设 json 有,单个 JSONObject

aJsonString1  = jsonArray.getJSONObject(0).getString("value");
aJsonString2  = jsonArray.getJSONObject(0).getString("timestamp");

关于android - 数组无法转换为 JSONObject Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235965/

相关文章:

android - Xcode 9 不更新 ionic 2 ios 应用程序图标

android将日志语句写入sdcard

javascript - 无法访问 $scope.property,但可以在 console.log($scope) 上看到它

python - 如何将此 JSON 时间序列数据放入 pandas 数据帧中?

python - 使数组长度相同,附加 json 字符串

android - 由于 'Process crashed.',检测运行失败

Android Kotlin 按钮 + 警告对话框 + 列表

android - 在 Gingerbread 上完美运行时,应用程序在 ICS 中的 Resume 上崩溃

javascript - 如何从 API 获取未见过/未读的通知计数?

java - 无法解析其中包含 List 元素的 json