【问题标题】:Extract a string from a JSONArray从 JSONArray 中提取字符串
【发布时间】:2019-06-08 14:20:39
【问题描述】:

我正在尝试构建一个有趣的测验游戏,但我正在努力弄清楚如何从 Android Studio 中的 JSONArray 中提取我想要的字符串

我在 Logcat 中获得了“JSON”和“结果”的日志,但我似乎无法弄清楚如何将我的 mQuestion 变量设置为相关字符串。

JSON

{
"response_code":0,
"results":[{
    "category":"General Knowledge",
    "type":"multiple",
    "difficulty":"medium",
    "question":"According to the BBPA, what is the most common pub name in the UK?",
    "correct_answer":"Red Lion",
    "incorrect_answers": [ 
        "Royal Oak",
        "White Hart",
        "King's Head"
     ]
}]
}

我的代码

@Override
protected void onPostExecute(String s) {
   super.onPostExecute(s);
   Log.i("JSON", s);

   try {
        JSONObject jsonObject = new JSONObject(s);
        String results = jsonObject.getString("results");
        Log.i("results", results);
        JSONArray arr = new JSONArray(results);
        for (int i = 0; i < arr.length(); i++) {
            mQuestion = arr.getJSONObject(3).getString("question");

            Log.i("Question", mQuestion);
        }


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

    }

我得到的 Logcat 是 W/System.err: at ...MainActivity$getQuestion.onPostExecute(MainActivity.java:67)

67 是包含 "mQuestion = arr.getJSONObject(3).getString("question");" 的行

【问题讨论】:

    标签: java json android-studio


    【解决方案1】:

    你需要使用你在循环中声明的i

      mQuestion = arr.getJSONObject(i).getString("question");
    

    【讨论】:

      【解决方案2】:

      您错误地解析了 JsonObject 和 JsonArray。 使用此代码:

       @Override
                  protected void onPostExecute(String s) {
                      super.onPostExecute(s);
                      Log.i("JSON", s);
      
                      try {
                          JSONObject jsonObject = new JSONObject(s);
                          JSONArray results = jsonObject.getJSONArray("results");
                          JSONObject jsonObject1 = results.getJSONObject(0);
                          Log.i("results", results.toString());
                          String mQuestion = jsonObject1.getString("question");
                          Log.i("Question", mQuestion);
      
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
      
      
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多