java - 在 Android Studio 的 Java 中解析 JSON 的问题

标签 java android json

我正在学习基本的 Java 应用程序创建,并且认为到目前为止我做得还不错,但是我在解析来自服务器的 JSON 响应方面遇到了问题。

我什至不确定我的回复是否正确构建。

响应表单服务器:

[{"Q_Number":"1","Question":"This is Q1"},{"Q_Number":"2","Question":"This is Q2"},{"Q_Number":"3","Question":"This is Q3"}]

如您所见,服务器给出了三个问题,标记为 1 - 3。 理想情况下,我想要的是将 JSON 解析为标记为以下的字符串:q1String q2String q3String

我在这里尝试了多种解析代码形式,并试图让它对我有用。这是我目前凌乱的代码:

String jsonString = a.toString();
    try {
JSONObject json = new JSONObject(jsonString);

        JSONObject jsonOb = json.getJSONObject("1");

        String str_value=jsonOb.getString("Question");

        Log.i("JSON",str_value);

    } catch (JSONException e) {
        Log.e("MYAPP", "unexpected JSON exception", e);
        // Do something to recover ... or kill the app.
    }

这是我得到的最后一个错误:

org.json.JSONException: Value [{"Q_Number":"1","Question":"This is Q1"},{"Q_Number":"2","Question":"This is Q2"},{"Q_Number":"3","Question":"This is Q3"}] of type org.json.JSONArray cannot be converted to JSONObject

最佳答案

您应该将源字符串转换为 JSONArray 而不是 JSONObject
请试试这个

    String jsonString = a.toString();
    try
    {
        JSONArray json = new JSONArray(jsonString);
        for(int index = 0; index < json.length(); ++index)
        {
            JSONObject obj = json.getJSONObject(index);
            String str_value = obj.getString("Question");
            Log.i("JSON", str_value);
        }
    }
    catch (JSONException e)
    {
        e.printStackTrace();
        // Do something to recover ... or kill the app.
    }

关于java - 在 Android Studio 的 Java 中解析 JSON 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52067239/

相关文章:

java - 从 hibernate 查询中获取 java.util.map 列表形式的结果

Android:WebView onClick 不起作用?

Android Studio 依赖搜索

android - 如何在可扩展 ListView 中使 child 可点击

python - 是否可以在不将编码器传递给 json.dumps() 的情况下将枚举转储到 json 中?

java - 我应该创建一个 Map 对象并在各处引用它,还是在每次需要时实例化它?

java - java中的快速随机文件访问

php - 如何使用 PHP 将 JSON 数据记录到文件?

java - 从内存角度来看 String[]/List<String> 哪个更好

android - 通过 Socket.io websocket 从我的应用程序向特定的 socketId 发送 json 和音频文件