这个问题在这里已经有了答案:
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"
}
]
}
}
2条答案
按热度按时间tpxzln5u1#
您只需要理解jsonobject结构和jsonarray结构之间的区别
jsonobject以“{”开头,jsonarray以“[”开头。
我刚注意到你的错误,你没有给任何变量赋值json.get(“response”)。
所以试着像上面那样修改你的代码。
rdrgkggo2#
你的问题是
players
不是一个JSONObject
,这是一个JSONArray
其中包含JSONObject
s。在这种情况下,players
包含一个JSONObject
,因此您需要首先使用players[0]
: