Shruti sharma
Shruti sharma

Reputation: 211

Reading element one by one in JsonArray

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

Answers (1)

Stephen C
Stephen C

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

Related Questions