从JSON对象获取值

时间:2015-04-27 16:10:09

标签: android json api

我在这里收到了这个输出:

{
   "hi:{
      "id":35445129,
      "name":"Hi",
      "profileIconId":28,
      "revisionDate":1428718587000,
      "summonerLevel":30
   }
}
来自Riot Games api。

我试着在这里使用这段代码:

    GetRequest gr = Unirest.get("https://na.api.pvp.net/api/lol/na/v1.4/
    summoner/by-name/hi?api_key={this is my key that I won't put in}");

    HttpResponse<JsonNode> node =  gr.asJson();
    JSONObject obj = new JSONObject(node.getBody());
    System.out.println(obj.getJSONObject(name).getInt("id"));

尝试打印出id的值,但是当我运行它时会出现这个异常:

Exception in thread "main" org.json.JSONException: JSONObject["hi"] not found.
at org.json.JSONObject.get(JSONObject.java:459)
at org.json.JSONObject.getJSONObject(JSONObject.java:558)
at thing.Main.main(Main.java:38)

任何人都知道我做错了什么?

谢谢:)

2 个答案:

答案 0 :(得分:0)

你的JSON是错误的,这就是异常即将到来的原因。不论是{

答案 1 :(得分:0)

你的JSON错了。看看你的异常告诉你的事情:

Exception in thread "main" org.json.JSONException: JSONObject["hi"] not found.

这是因为您忘记了hi上的结束双引号。

这就是你所拥有的:

{
   "hi:{
      "id":35445129,
      "name":"Hi",
      "profileIconId":28,
      "revisionDate":1428718587000,
      "summonerLevel":30
   }
}

但它应该是:

{
   "hi":{
      "id":35445129,
      "name":"Hi",
      "profileIconId":28,
      "revisionDate":1428718587000,
      "summonerLevel":30
   }
}