Java 在JSON数组中找不到JSON对象
我知道有重复的问题。尽管如此,我还是无法弄明白这一点 下面是我从API收到的JSON文件。我需要得到“年”值 我得到的错误是: 未找到消息org.glassfish.jersey.server.ContainerException:org.json.jsoneException:JSONArray[1] 这与Java上的行有关: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
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);