首页 > 解决方案 > 在 Java Android 中解析 JSON 对象时出错

问题描述

在我的 Android 应用程序中,我正在获取锦标赛积分表的详细信息,以将输出转换为从 JSON 对象到 Java 的字符串

JSON对象如下所示:

{
  "group": {
    "Teams": [
      {
        "name": "Team 1",
        "p": "10",
        "w": "9",
        "l": "1",
        "points": "18"
      },
      {
        "name": "Team 2",
        "p": "10",
        "w": "9",
        "l": "1",
        "points": "18"
      },
      {
        "name": "Team 3",
        "p": "10",
        "w": "9",
        "l": "1",
        "points": "18"
      },
      {
        "name": "Team 4",
        "p": "10",
        "w": "6",
        "l": "4",
        "points": "12"
      },
      {
        "name": "Team 5",
        "p": "10",
        "w": "6",
        "l": "4",
        "points": "12"
      },
      {
        "name": "Team 6",
        "p": "10",
        "w": "6",
        "l": "4",
        "points": "12"
      },
      {
        "name": "Team 7",
        "p": "10",
        "w": "5",
        "l": "5",
        "points": "11"
      },
      {
        "name": "Team 8",
        "p": "10",
        "w": "5",
        "l": "5",
        "points": "11"
      }
    ]
  }
}

Android Java 代码如下:

JSONObject match = new JSONObject(response);

if (match.has("group")) {
    JSONObject group = match.getJSONObject("group");

    if (match.has("Teams")) {
        JSONObject teams = group.getJSONObject("Teams");

        if (teams.has("0")) {
            JSONObject teams_object = teams.getJSONObject("0");
            String team_name = teams_object.getString("name");
            String matches_played = teams_object.getString("p");
            String matches_won = teams_object.getString("w");
            String matches_lost = teams_object.getString("l");
            String points = teams_object.getString("points");
        }
    }
}

但是我收到了错误,我通过 getMessage() 方法打印错误消息。这是下面的错误:

Error: Value ["name","p","w","l","points"] at header of type org.json.JSONArray cannot be converted to JSONObject

任何人都可以帮忙看看我哪里出错了或者解决方法是什么?提前致谢

标签: androidjsonandroid-arrayadapterandroid-json

解决方案


在您的 Json Teams 中包含对象数组并且您解析错误。试试这个

 JSONObject jsonObject = new JSONObject(response);
 JSONObject groups = jsonObject.getJSONObject("group");
 JSONArray teams = groups.getJSONArray("Teams");
 for(int i=0;i<teams.length();i++){
        JSONObject obj = teams.getJSONObject(i);
        name.append(obj.getString("name")+"\n");
 }

推荐阅读