簡體   English   中英

獲取嵌套的 JSONObject Java?

[英]Get Nested JSONObject Java?

我正在嘗試將 JSON 對象嵌套在另一個 JSON 對象中。 當我運行我的主類時:

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

public class Main {
public static void main(String[] args) throws IOException, JSONException {
    NBAPlayers players = new NBAPlayers();
    JSONObject json = players.readJsonFromUrl("http://data.nba.net/10s/prod/v1/2017/players.json");
    JSONObject League = json.getJSONObject("league");
    JSONObject standard =League.getJSONObject("standard");
    JSONObject firstName = standard.getJSONObject("firstName");
}
}

我收到錯誤:

 Exception in thread "main" org.json.JSONException: 

  JSONObject["standard"] is not a JSONObject.

我正在使用maven artifact org.json:json包。

這是示例中返回 url 的 json 的一部分

  {
  "_internal": {
    "pubDateTime": "2017-12-10 11:42:23.504",
    "xslt": "xsl/league/roster/marty_active_players.xsl",
    "eventName": "league_roster"
  },
  "league": {
    "standard": [
      {
        "firstName": "Alex",
        "lastName": "Abrines",
        "personId": "203518",
        "teamId": "1610612760",
        "jersey": "8",
        "isActive": true,
        "pos": "G",
        "heightFeet": "6",
        "heightInches": "6",
        "heightMeters": "1.98",
        "weightPounds": "190",
        "weightKilograms": "86.2",
        "dateOfBirthUTC": "1993-08-01",
        "teams": [
          {
            "teamId": "1610612760",
            "seasonStart": "2016",
            "seasonEnd": "2017"
          }
        ],
        "draft": {
          "teamId": "1610612760",
          "pickNum": "32",
          "roundNum": "2",
          "seasonYear": "2013"
        },
        "nbaDebutYear": "2016",
        "yearsPro": "1",
        "collegeName": "",
        "lastAffiliation": "Spain/Spain",
        "country": "Spain"
      },
      {
        "firstName": "Quincy",
        "lastName": "Acy",
        "personId": "203112",
        "teamId": "1610612751",
        "jersey": "13",
        "isActive": true,
        "pos": "F",
        "heightFeet": "6",
        "heightInches": "7",
        "heightMeters": "2.01",
        "weightPounds": "240",
        "weightKilograms": "108.9",
        "dateOfBirthUTC": "1990-10-06",
        "teams": [
          {
            "teamId": "1610612761",
            "seasonStart": "2012",
            "seasonEnd": "2013"
          },
          {
            "teamId": "1610612758",
            "seasonStart": "2013",
            "seasonEnd": "2013"
          },
          {
            "teamId": "1610612752",
            "seasonStart": "2014",
            "seasonEnd": "2014"
          },
          {
            "teamId": "1610612758",
            "seasonStart": "2015",
            "seasonEnd": "2015"
          },
          {
            "teamId": "1610612742",
            "seasonStart": "2016",
            "seasonEnd": "2016"
          },
          {
            "teamId": "1610612751",
            "seasonStart": "2016",
            "seasonEnd": "2017"
          }
        ],

正如你所看到的,標准不是一個對象。 是數組。

你應該改變你的代碼如下

JSONArray standard =League.getJSONArray("standard");
    for (int i = 0; i < standard.length(); i++) {
        String firstName = standard.getJSONObject(i).getString("firstName");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM