Android JSON 数组解析

Android JSON Array Parsing

我如何用网络请求解析这个 Json API,正是元素 "Players":

    {
    "data": [
        {
            "Id": *,
            "ModId": *,
            "appId": ***********,
            "online": *,
            "Servername": "**** **** *****",
            "IpAddress": "**.**.**.**",
            "Port": ****,
            "ServerPassword": ********,
            "StartParameters": "*******",
            "Slots": **,
            "Playercount": **,
            "Civilians": **,
            "Medics": *,
            "Cops": *,
            "Adac": *,
            "Players": [
                "***********",
                "***********",
                "******",
                "******"
            ]
        }
    ]
}

我希望它能够解析我每次循环 运行 一个玩家名时的状态,以将其添加到列表视图中。 但是我不知道如何像这样解析 "Players" 元素。

感谢您的帮助!

在这里使用新概念 Retofit 你不需要解析只是创建 pojo class,参考下面 link

https://square.github.io/retrofit/

您可以保存从 JSON 中删除了多少元素的索引。喜欢

int index = 0;

并创建一个可以访问 JSON 的方法并将索引传递给它,例如

public String getPlayerFromJsonAtIndex(int i) {...}.

现在访问 JSON 字符串并使用 JSONObject 解析它(提示在开始时立即存储解析的玩家数组)。让你像

一样解析 Players 数组
JSONArray players = (new JSONObject(jsonString))
  .getJSONArray("data")
  .get(0)
  .getJSONArray("Players");

现在玩家 JSONArray 从提供的索引处获取字符串。喜欢

{
  return (String)players.get(i);
}

希望对您有所帮助谢谢。

使用下面的代码来解析响应。

JSONObject objMain = new JSONObject(yourData);
        try {
            JSONArray respArray = objMain.getJSONArray("data");
            for(int i=0;i<respArray.length();i++)
            {
                JSONObject dataObj = respArray.getJSONObject(i);
                String id = dataObj.getString("id");
                -
                        -
                JSONArray arrayPlayer = dataObj.getJSONArray("players");
                for(int j=0;j<arrayPlayer.length();j++){
                    JSONObject playerObj = arrayPlayer.getJSONObject(j);
                    ---
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }

并使用适当的参数获取剩余数据。:)

以下代码使用 JSON 字符串中的球员填充列表。

List<String> players = new ArrayList<>();

try {
    JSONObject jsonObj = new JSONObject(jsonString);
    JSONArray data = jsonObj.getJSONArray("data");
    JSONObject dataObj = data.getJSONObject(0);
    JSONArray playersJson = dataObj.getJSONArray("Players");

    for (int i = 0; i < playersJson.length(); i++) {
        players.add(playersJson.get(i).toString());
    }
} catch (JSONException e) {
    Log.e(TAG, e.getMessage());
}

然后您可以使用此列表和 ArrayAdapter 来填充您的 ListView

    ArrayAdapter<String> adapter;
    ListView listView = (ListView) findViewById(R.id.listView);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, players);
    listView.setAdapter(adapter);