Java 在JSON数组中找不到JSON对象

Java 在JSON数组中找不到JSON对象,java,json,Java,Json,我知道有重复的问题。尽管如此,我还是无法弄明白这一点 下面是我从API收到的JSON文件。我需要得到“年”值 我得到的错误是: 未找到消息org.glassfish.jersey.server.ContainerException:org.json.jsoneException:JSONArray[1] 这与Java上的行有关: JSONObject year = years.getJSONObject(1).getJSONObject("years"); 我还尝试: JSONObject y

我知道有重复的问题。尽管如此,我还是无法弄明白这一点

下面是我从API收到的JSON文件。我需要得到“年”值

我得到的错误是:

未找到消息org.glassfish.jersey.server.ContainerException:org.json.jsoneException:JSONArray[1]

这与Java上的行有关:

JSONObject year = years.getJSONObject(1).getJSONObject("years");
我还尝试:

JSONObject year = years.getJSONObject(1);
为什么这个代码不起作用?在
年份
数组中
索引1
不是很清楚
年份

JSON

爪哇


您正在使用索引为零的JSON数组。按如下方式操作:

   JSONArray years = data.getJSONArray("years");

   String year = years.getJSONObject(0).getString("year");

json显示年份值是一个包含1个元素的数组,该元素中有一个对象:

"years": [{ "id": 100531911, "year": 2012, "styles": [{ "id": 101395591, "name": "LT 2dr Convertible w/2LT (3.6L 6cyl 6M)", "submodel": { "body": "Convertible", "modelName": "Camaro Convertible", "niceName": "convertible" }, "trim": "LT" }] }],
由于数组元素编号从0开始,这意味着如果选择元素1,将出现以下错误:

未找到消息org.glassfish.jersey.server.ContainerException:org.json.jsoneException:JSONArray[1]

要修复它,您需要选择元素0而不是1:

years.getJSONObject(0);

实际上,1指向数组中的第二个元素,在本例中它不存在。0指向第一个JSONObject,其中包含年份。所以你想要
年。getJSONObject(0)
。试试
JSONObject year=years.getJSONObject(0)。数组索引通常从
0
开始,而不是
1
。@Jonathan Lonowski不是0索引处的“id”对象
years
是一个
JSONArray
,它是一个包含
JSONObjects
的数组。在您的示例中,这个
JSONArray
[]
,包含一个
JSONObject
{..}
。在这一个对象中,
id
year
,等等。因此它是
JSONArray->JSONObject->year
@NutellaAddict No.
“years”
指的是一个数组(
[…]
),其中包含一个对象(
{id:…}
)。数组的
0
索引将为您提供该对象。然后,您可以从中检索字符串形式的
“year”
"years": [{ "id": 100531911, "year": 2012, "styles": [{ "id": 101395591, "name": "LT 2dr Convertible w/2LT (3.6L 6cyl 6M)", "submodel": { "body": "Convertible", "modelName": "Camaro Convertible", "niceName": "convertible" }, "trim": "LT" }] }],
years.getJSONObject(0);