java json异常

vhmi4jdf  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(345)

这个问题在这里已经有了答案

org.json.jsonexception:jsonobject[“address”]不是jsonarray(1个答案)
三年前关门了。
使用此代码调用steam api。解析json给了我一些问题。我设法在控制台中打印json,访问furhter数据失败。这是我的密码:

JSONObject json = new JSONObject(IOUtils.toString(new URL("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXX&steamids=XXXXXXX"), Charset.forName("UTF-8")));
System.out.println(json.get("response")); >>> (1)
int out = json.getJSONObject("players").getInt("steamid");
System.out.println(out);
Exception in thread "main" org.json.JSONException: JSONObject["players"] not found.
{
    "response": {
        "players": [
            {
                "steamid": "XXXXX",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "XXXXX",
                "lastlogoff": 123123,
                "profileurl": "http://steamcommunity.com/id/XXX/",
                "avatar": "XXXXX",
                "avatarmedium": "XXXX",
                "avatarfull": "XXXXX",
                "personastate": 1,
                "primaryclanid": "XXX",
                "timecreated": XXX,
                "personastateflags": 0,
                "gameextrainfo": "Tom Clancy's Rainbow Six Siege",
                "gameid": "359550"
            }
        ]

    }
}
tpxzln5u

tpxzln5u1#

您只需要理解jsonobject结构和jsonarray结构之间的区别
jsonobject以“{”开头,jsonarray以“[”开头。
我刚注意到你的错误,你没有给任何变量赋值json.get(“response”)。

JSONObject json = new JSONObject(IOUtils.toString(new URL("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXX&steamids=XXXXXXX"), Charset.forName("UTF-8")));
            System.out.println(json.get("response"));
        JSONObject playersJson=json.get("response");
        int out = playersJson.getJSONArray("players").getJSONObject(0).getInt("steamid");

所以试着像上面那样修改你的代码。

rdrgkggo

rdrgkggo2#

你的问题是 players 不是一个 JSONObject ,这是一个 JSONArray 其中包含 JSONObject s。在这种情况下, players 包含一个 JSONObject ,因此您需要首先使用 players[0] :

int out = json.getJSONArray("players")[0].getInt("steamid");

相关问题