Reputation: 211
I have below JSON returned by API call.
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" +
" }"
I want to read name one by one under the itmes. I am using below code.
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
I am not able to iterate item array. it does not show length property of array.
Can you guide me how can I access element one by one.
Upvotes: 1
Views: 111
Reputation: 719006
It looks like you are using the javax.json.JsonArray
APIs or something similar. If so:
JsonArray items = obj.get("items").asArray();
for (int i = 0; i < items.size(); i++) {
System.out.println(items.getJsonObject(i));
}
Note that JsonArray
implements java.util.List
and you are getting the size using the standard List
API method.
The same code would work with com.google.gson.JsonArray
... though this class does NOT implement List
. Alternatively, you could make use of the fact that com.google.gson.JsonArray
implements Iterable
and write a "for each" loop:
for (JsonElement e: items) {
System.out.println(e);
}
The equivalent code for org.json.JSONArray
uses length()
instead of size()
.
In all cases, you should be able to answer your own question by searching for and reading the javadocs for the JSON library that you are using.
UPDATE - Apparently you are using the com.eclipsesource.minimal-json
. According to this javadoc, it has a size()
method and implements Iterable
.
Upvotes: 1