0

http://pastie.org/8269975。如果您查看我的代码,我不知道如何访问各个字段,例如 account_id、hero_id 等。我有这个代码。

JSONObject match = getMatchDetails("281699681");

如果我想访问像 account_id 这样的单个字段,那么此代码不起作用。

int a = match.result.players[0].account_id;

请帮助我,如果您想查看 JSON 脚本,这里是链接 https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id=281699681&key=8F48DE9EBF9C9EA121A6A9EF2E30B7C7

4

3 回答 3

1

JSON 使用 JavaScript 对象,而不是 Java 对象,因此您不能直接访问成员,就好像它们是 Java 对象一样。您需要像GSON这样的东西来在 JSON 表示和 Java 对象表示之间进行转换。

于 2013-08-26T04:52:22.867 回答
0

试试这个方法来动态迭代任何 json 对象。

private void parseJson(JSONObject data) {

        if (data != null) {
            Iterator<String> it = data.keys();
            while (it.hasNext()) {
                String key = it.next();

                try {
                    if (data.get(key) instanceof JSONArray) {
                        JSONArray arry = data.getJSONArray(key);
                        int size = arry.length();
                        for (int i = 0; i < size; i++) {
                            parseJson(arry.getJSONObject(i));
                        }
                    } else if (data.get(key) instanceof JSONObject) {
                        parseJson(data.getJSONObject(key));
                    } else {
                        System.out.println("" + key + " : " + data.optString(key));
                    }
                } catch (Throwable e) {
                    System.out.println("" + key + " : " + data.optString(key));
                    e.printStackTrace();

                }
            }
        }
    }
于 2013-08-26T04:49:55.490 回答
0

首先,尝试更换线路,

    String MatchDetailsURL = "https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id"+ matchID + "=&key=" + SteamWebAPIKey;

和,

    String MatchDetailsURL = "https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id="+ matchID + "&key=" + SteamWebAPIKey;

在您的代码中并尝试。

Bcs,而不是给match_id="+ matchID + "&key你已经给了match_id"+ matchID + "=&key..所以,URL本身是错误的,它返回一个错误的请求..

于 2013-08-26T05:19:47.907 回答