【问题标题】:Getting values from a JSON object从 JSON 对象中获取值
【发布时间】:2015-04-27 16:10:09
【问题描述】:

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

{
   "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)

有人知道我做错了什么吗?

谢谢:)

【问题讨论】:

  • 显然您的“Hi”键没有任何价值。此外,您的 JSON 格式似乎有误。使用this website 进行进一步验证。

标签: android json api


【解决方案1】:

您的 JSON 错误,这就是异常到来的原因。而不是 {

【讨论】:

    【解决方案2】:

    您的 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
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-29
      • 1970-01-01
      • 2022-06-10
      • 2018-11-15
      • 2020-02-17
      • 2020-09-28
      相关资源
      最近更新 更多