在 JsonArray 中一个一个地读取元素
Reading element one by one in JsonArray
API 调用返回了以下 JSON。
String jsonString="{\r\n" +
" \"count\": 100,\r\n" +
" \"limit\": 100,\r\n" +
" \"totalResults\": 225,\r\n" +
" \"hasMore\": true,\r\n" +
" \"items\": [\r\n" +
" {\r\n" +
" \"id\": \"55D40522-8672-48B0-B225-FD3CE6686AD6\",\r\n" +
" \"name\": \"AcmeHCMExtended\",\r\n" +
" \"version\": \"20.01.01.03\",\r\n" +
" \"status\": \"DRAFT\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"id\": \"2DB4C83B-0CF9-4A8E-AC41-A29B30324121\",\r\n" +
" \"name\": \"AFinancialBot\",\r\n" +
" \"version\": \"1.0\",\r\n" +
" \"status\": \"DRAFT\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"id\": \"7EA85B81-3CA1-4BE0-B095-217E7C93DCEF\",\r\n" +
" \"name\": \"AIAMFG\",\r\n" +
" \"version\": \"1.0\",\r\n" +
" \"status\": \"DRAFT\"\r\n" +
" }"
我想在主题下一个一个地看名字。我正在使用以下代码。
JsonObject obj=Json.parse(jsonString).asObject();
JsonArray items=obj.get("items").asArray();
System.out.println(items); //it prints everything under items.
`System.out.println(items.name); ` //It gives error
我无法迭代项目数组。它不显示数组的长度 属性。
你能指导我如何逐个访问元素吗?
您似乎在使用 javax.json.JsonArray
API 或类似的东西。如果是:
JsonArray items = obj.get("items").asArray();
for (int i = 0; i < items.size(); i++) {
System.out.println(items.getJsonObject(i));
}
请注意,JsonArray
实现了 java.util.List
,并且您使用标准 List
API 方法获取尺寸。
相同的代码可以与 com.google.gson.JsonArray
一起使用......尽管这个 class 没有实现 List
。或者,您可以利用 com.google.gson.JsonArray
实现 Iterable
的事实并编写一个“for each”循环:
for (JsonElement e: items) {
System.out.println(e);
}
org.json.JSONArray
的等效代码使用 length()
而不是 size()
。
在所有情况下,您应该能够通过搜索和阅读您正在使用的 JSON 库的 javadoc 来回答您自己的问题。
更新 - 显然你正在使用 com.eclipsesource.minimal-json
。根据这个javadoc,它有一个size()
方法,实现了Iterable
.
API 调用返回了以下 JSON。
String jsonString="{\r\n" +
" \"count\": 100,\r\n" +
" \"limit\": 100,\r\n" +
" \"totalResults\": 225,\r\n" +
" \"hasMore\": true,\r\n" +
" \"items\": [\r\n" +
" {\r\n" +
" \"id\": \"55D40522-8672-48B0-B225-FD3CE6686AD6\",\r\n" +
" \"name\": \"AcmeHCMExtended\",\r\n" +
" \"version\": \"20.01.01.03\",\r\n" +
" \"status\": \"DRAFT\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"id\": \"2DB4C83B-0CF9-4A8E-AC41-A29B30324121\",\r\n" +
" \"name\": \"AFinancialBot\",\r\n" +
" \"version\": \"1.0\",\r\n" +
" \"status\": \"DRAFT\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"id\": \"7EA85B81-3CA1-4BE0-B095-217E7C93DCEF\",\r\n" +
" \"name\": \"AIAMFG\",\r\n" +
" \"version\": \"1.0\",\r\n" +
" \"status\": \"DRAFT\"\r\n" +
" }"
我想在主题下一个一个地看名字。我正在使用以下代码。
JsonObject obj=Json.parse(jsonString).asObject();
JsonArray items=obj.get("items").asArray();
System.out.println(items); //it prints everything under items.
`System.out.println(items.name); ` //It gives error
我无法迭代项目数组。它不显示数组的长度 属性。
你能指导我如何逐个访问元素吗?
您似乎在使用 javax.json.JsonArray
API 或类似的东西。如果是:
JsonArray items = obj.get("items").asArray();
for (int i = 0; i < items.size(); i++) {
System.out.println(items.getJsonObject(i));
}
请注意,JsonArray
实现了 java.util.List
,并且您使用标准 List
API 方法获取尺寸。
相同的代码可以与 com.google.gson.JsonArray
一起使用......尽管这个 class 没有实现 List
。或者,您可以利用 com.google.gson.JsonArray
实现 Iterable
的事实并编写一个“for each”循环:
for (JsonElement e: items) {
System.out.println(e);
}
org.json.JSONArray
的等效代码使用 length()
而不是 size()
。
在所有情况下,您应该能够通过搜索和阅读您正在使用的 JSON 库的 javadoc 来回答您自己的问题。
更新 - 显然你正在使用 com.eclipsesource.minimal-json
。根据这个javadoc,它有一个size()
方法,实现了Iterable
.