Now that we can see the data, we can see that payments is in fact an array (values uses []).

That means you need to call rootObj.getAsJsonArray("payments") which returns a JsonArray, and it is an Iterable<JsonElement>, which means your loop should be for(JsonElement pa : paymentsObject).

Remember, each value of the array can be any type of Json element (object, array, string, number, ...).

You know that they are JsonObject, so you can call getAsJsonObject() on them.

json = (json data)
JsonParser parser = new JsonParser();
JsonObject rootObj = parser.parse(json).getAsJsonObject();
JsonArray paymentsArray = rootObj.getAsJsonArray("payments");
for (JsonElement pa : paymentsArray) {
    JsonObject paymentObj = pa.getAsJsonObject();
    String     quoteid     = paymentObj.get("quoteid").getAsString();
    String     dateEntered = paymentObj.get("date_entered").getAsString();
    BigDecimal amount      = paymentObj.get("amount").getAsBigDecimal();
}
Answer from Andreas on Stack Overflow
🌐
Tabnine
tabnine.com › home page › code › java › com.google.gson.jsonarray
com.google.gson.JsonArray.iterator java code examples | Tabnine
@Override @SuppressWarnings("unchecked") public T[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { JsonArray array = json.getAsJsonArray(); Iterator<JsonElement> it = array.iterator(); ArrayList<T> cmds = new ArrayList<T>(); while (it.hasNext()) { JsonObject element = (JsonObject)it.next(); Map.Entry<String, JsonElement> entry = element.entrySet().iterator().next(); String name = entry.getKey(); Class<?> clazz; try { clazz = Class.forName(name); } catch (ClassNotFoundException e) { throw new CloudRuntimeException("can't find " + name
🌐
Java2s
java2s.com › example › java-api › com › google › gson › jsonarray › iterator-0-1.html
Example usage for com.google.gson JsonArray iterator
public ArrayList<ProductosFactEntitiy> generaListaProductos() { JsonElement json = new JsonParser().parse(this.productosArray); JsonArray array = json.getAsJsonArray(); Iterator iterator = array.iterator(); ArrayList<ProductosFactEntitiy> productosList = null; while (iterator.hasNext()) { if (productosList == null) { productosList = new ArrayList<>(); }/* w w w .j a va 2s. c o m*/ JsonElement json2 = (JsonElement) iterator.next(); Gson gson = new Gson(); ProductosFactEntitiy prod = gson.fromJson(json2, ProductosFactEntitiy.class); productosList.add(prod); } return productosList; }
🌐
Program Creek
programcreek.com › java-api-examples
com.google.gson.JsonArray#iterator
private static void getSizeMultiDimensionalArray(JsonArray jsonArray, List<Integer> dimensions) { Iterator<JsonElement> iterator = jsonArray.iterator(); if (iterator.hasNext()) { JsonElement jsonElement = iterator.next(); if (jsonElement.isJsonArray()) { JsonArray shapeArray = jsonElement.getAsJsonArray(); dimensions.add(shapeArray.size()); getSizeMultiDimensionalArray(shapeArray, dimensions); } } } ... private static <T> ArrayList<T> JSONArrayStringToArrayList(String jsonString,Class<T> classofT){ Gson gson=new Gson(); JsonParser parser = new JsonParser(); JsonElement el = parser.parse(jsonString); JsonArray jsonArray=el.getAsJsonArray(); Iterator<JsonElement> it = jsonArray.iterator(); ArrayList<T> al=new ArrayList<>(); while(it.hasNext()){ JsonElement e = it.next(); T data=gson.fromJson(e, classofT); al.add(data); } return al; }
🌐
Java Tips
javatips.net › api › com.google.gson.jsonarray
Java Examples for com.google.gson.JsonArray - Javatips.net
@Override public JsonElement apply(JsonElement original) { JsonElement result = duplicate(original); JsonElement item = path.head().navigate(result); JsonElement data = mySourcePath.head().navigate(original); if (item.isJsonObject()) { item.getAsJsonObject().add(path.tail(), data); } else if (item.isJsonArray()) { JsonArray array = item.getAsJsonArray(); int index = (path.tail().equals("-")) ? array.size() : Integer.valueOf(path.tail()); List<JsonElement> temp = new ArrayList<JsonElement>(); Iterator<JsonElement> iter = array.iterator(); while (iter.hasNext()) { JsonElement stuff = iter.next()
🌐
Tabnine
tabnine.com › home page › code › java › com.google.gson.jsonarray
com.google.gson.JsonArray.forEach java code examples | Tabnine
filters.getAsJsonArray().forEach((f) -> viewFilters.add(context.deserialize(f, DashboardFilter.class)));
🌐
Baeldung
baeldung.com › home › json › iterating over an instance of org.json.jsonobject
Iterating Over an Instance of org.json.JSONObject | Baeldung
May 5, 2025 - Let’s try and keep a similar approach of using an iterator. Instead of calling keys(), though, we’ll call iterator(): void handleJSONArray(JSONArray jsonArray) { jsonArray.iterator().forEachRemaining(element -> { handleValue(element) }); }
Find elsewhere
🌐
GitHub
github.com › google › gson › blob › main › gson › src › main › java › com › google › gson › JsonArray.java
gson/gson/src/main/java/com/google/gson/JsonArray.java at main · google/gson
import com.google.gson.internal.NonNullElementWrapperList; import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList; import java.util.Iterator; import java.util.List; · /** * A class representing an array type in JSON. An array is a list of {@link JsonElement}s each of ·
Author   google
🌐
Hotexamples
java.hotexamples.com › examples › com.google.gson › JsonArray › iterator › java-jsonarray-iterator-method-examples.html
Java JsonArray.iterator Examples, com.google.gson.JsonArray.iterator Java Examples - HotExamples
private static JsonObject convertBooleanQuery(BooleanQuery booleanQuery) { JsonArray musts = new JsonArray(); JsonArray shoulds = new JsonArray(); JsonArray mustNots = new JsonArray(); JsonArray filters = new JsonArray(); for (BooleanClause clause : booleanQuery.clauses()) { switch ...
Top answer
1 of 4
3

So you have the JsonArray object with your records, here's what you do to get your functional objects:

Type type = new TypeToken<List<DataMetrics>>() {}.getType();
List<DataMetrics> records = gson.fromJson(jsonArrayThatYouHave, type);

Then you iterate through you objects and filter the ones you need. In java 8 you can do this:

List<DataMetrics> result = records.stream().filter(record -> record.name.equals("Client::Sync")).collect(toList());

This approach is converting all objects and iterating after, if exactly this part of code is performance critical, you can still iterate through json and convert only necessary objects (but i doubt that this will be actually faster than described above).

Anyway this is more maintainable and understandable code.

UPDATE:

the same for java 7 will be:

List<DataMetrics> result = new LinkedList<>();

for(DataMetrics record : records){
   if(record.name.equals("Client::Sync")){
      result.add(record);
   }
}
2 of 4
1

Or if you want to iterate json and parse only required ones heres what you can do:

Type type = new TypeToken<List<DataMetrics>>() {}.getType();

for(JsonElement elem : jsonArrayThatYouHave) {
   if (elem.getAsJsonObject().get("name").getAsString().equals("Client::Sync")) {
      result.add(gson.fromJson(elem, type));
   }
}

but I dont think this is actually faster than the first one because in both cases you are converting json to java functional object with parser and getting JsonArray or anything else. Taking into consideration the fact that both are Googles libs, i assume that parsing from JsonObject to some specific type with gson is way faster than from String (raw json) to the same specific type...

🌐
Javadoc.io
javadoc.io › doc › com.google.code.gson › gson › 2.8.5 › com › google › gson › JsonArray.html
JsonArray - gson 2.8.5 javadoc
Bookmarks · Latest version of com.google.code.gson:gson · https://javadoc.io/doc/com.google.code.gson/gson · Current version 2.8.5 · https://javadoc.io/doc/com.google.code.gson/gson/2.8.5 · package-list path (used for javadoc generation -link option) · https://javadoc.io/doc/com.goog...
🌐
Medium
medium.com › @reham.muzzamil_67114 › a-quick-guide-to-iterate-over-a-dynamic-json-string-6b024aa6b1e
A quick guide to Iterate over a dynamic JSON string! | by Reham Muzzamil | Medium
May 16, 2020 - } else { return primitive; } } else if (element.isJsonArray()) { JsonArray jsonArray = element.getAsJsonArray(); JsonArray cleanedNewArray = new JsonArray(); for (JsonElement jsonElement : jsonArray) { cleanedNewArray.add(traverse(jsonElement)); } return cleanedNewArray; } else if (element.isJsonNull()) { return element.getAsJsonNull(); } else { JsonObject obj = element.getAsJsonObject(); JsonObject encodedJsonObject = new JsonObject(); for (Map.Entry<String, JsonElement> entry : obj.entrySet()) { encodedJsonObject.add(StringUtils.encodeValue(entry.getKey()), traverse(entry.getValue())); } return encodedJsonObject; } }
Top answer
1 of 5
13

replace "" with blank.

   Map<String, Object> attributes = new HashMap<String, Object>();
   Set<Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
   for(Map.Entry<String,JsonElement> entry : entrySet){
    if (! nonProperties.contains(entry.getKey())) {
      properties.put(entry.getKey(), jsonObject.get(entry.getKey()).replace("\"",""));
    }
   }
2 of 5
5

How are you creating your JsonObject? Your code works for me. Consider this

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
...
...
...
try{
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("keyInt", 2);
        jsonObject.addProperty("keyString", "val1");
        jsonObject.addProperty("id", "0123456");

        System.out.println("json >>> "+jsonObject);

        Map<String, Object> attributes = new HashMap<String, Object>();
        Set<Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
        for(Map.Entry<String,JsonElement> entry : entrySet){
          attributes.put(entry.getKey(), jsonObject.get(entry.getKey()));
        }

        for(Map.Entry<String,Object> att : attributes.entrySet()){
            System.out.println("key >>> "+att.getKey());
            System.out.println("val >>> "+att.getValue());
            } 
    }
    catch (Exception ex){
        System.out.println(ex);
    }

And it is working fine. Now I am interested in knowing how you created that JSON of yours?

You can also try this (JSONObject)

import org.json.JSONObject;
...
...
...
try{
        JSONObject jsonObject = new JSONObject("{\"keyInt\":2,\"keyString\":\"val1\",\"id\":\"0123456\"}");
        System.out.println("JSON :: "+jsonObject.toString());

        Iterator<String> it  =  jsonObject.keys();
         while( it.hasNext() ){
             String key = it.next();
             System.out.println("Key:: !!! >>> "+key);
             Object value = jsonObject.get(key);
             System.out.println("Value Type "+value.getClass().getName());
            }
    }
    catch (Exception ex){
        System.out.println(ex);
    }
🌐
Tabnine
tabnine.com › home page › code › java › org.json.simple.jsonarray
org.json.simple.JSONArray.iterator java code examples | Tabnine
private Map<String, Scope> extractScopesFromJson(JSONObject scopesJson) { Map<String, Scope> scopeMap = new HashMap<>(); if (scopesJson != null) { Iterator<?> scopesIterator = ((JSONArray) ((JSONObject) scopesJson .get(APIMgtConstants.SWAGGER_OBJECT_NAME_APIM)).get(APIMgtConstants.SWAGGER_X_WSO2_SCOPES)) .iterator(); while (scopesIterator.hasNext()) { Scope scope = new Gson().fromJson(((JSONObject) scopesIterator.next()).toJSONString(), Scope.class); scopeMap.put(scope.getName(), scope); } } else { if (log.isDebugEnabled()) { log.debug("Unable to extract scopes from provided json as it is null."); } } log.debug("Scopes of extracted from Swagger: {}", scopeMap); return scopeMap; }
Top answer
1 of 3
4

JsonArray is an Iterable<JsonElement>. So you can use for in loop.

JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();
final JsonArray data = jsonObject.getAsJsonArray("data");
System.out.println("data : " + data);
System.out.println("recordsTotal : " + jsonObject.get("recordsTotal"));
List<String> list = new ArrayList<String>();
for (JsonElement element : data) {
    list.add(((JsonObject) element).get("part_number").getAsString());

}
2 of 3
1

Suppose class Name for Json Model is Example.

import com.google.gson.annotations.SerializedName;
import java.util.List;
public class Example {

    @SerializedName("recordsTotal")
    private Integer recordsTotal;
    @SerializedName("data")
    private List<Datum> data = null;

    public Integer getRecordsTotal() {
        return recordsTotal;
    }

    public void setRecordsTotal(Integer recordsTotal) {
        this.recordsTotal = recordsTotal;
    }

    public List<Datum> getData() {
        return data;
    }

    public void setData(List<Datum> data) {
        this.data = data;
    }

}

And suppose List of Data class name is Datum :-

import com.google.gson.annotations.SerializedName;
import java.util.List;
public class Datum {

    @SerializedName("part_number")

    private String partNumber;
    @SerializedName("part_type")

    private String partType;
    @SerializedName("id")

    private Integer id;
    @SerializedName("manufacturers")

    private List<String> manufacturers = null;

    public String getPartNumber() {
        return partNumber;
    }

    public void setPartNumber(String partNumber) {
        this.partNumber = partNumber;
    }

    public String getPartType() {
        return partType;
    }

    public void setPartType(String partType) {
        this.partType = partType;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<String> getManufacturers() {
        return manufacturers;
    }

    public void setManufacturers(List<String> manufacturers) {
        this.manufacturers = manufacturers;
    }

}

And then through Gson library we can convert json to java Model :

Example example = new Gson().fromJson(jsonString, new TypeToken<Example>() {}.getType());

Now we can get list of data though example model :-

List<Datum>  dataList = example.getData();

From dataList you can traverse and get all info.

If partNmber List we need then we can get in this way :-

 List<String> partNumberList = new ArrayList<>();
 for (Datum data : dataList) {
       partNumberList.add(data.getPartNumber());
  }
🌐
Java Code Geeks
javacodegeeks.com › home › core java
Converting JSON Array to Java List with Gson - Java Code Geeks
April 25, 2024 - We parse a JSON array into a JsonArray using Gson’s JsonParser. Then, we iterate over each element of the array, converting them into Java objects using Gson’s fromJson() method. Finally, we add each Java object to a List.
🌐
Javatpoint
javatpoint.com › iterate-json-array-java
Iterate JSON Array Java - Javatpoint
Iterate JSON Array Java with java tutorial, features, history, variables, object, programs, operators, oops concept, array, string, map, math, methods, examples etc.
🌐
Javadoc.io
javadoc.io › doc › com.google.code.gson › gson › 2.6.2 › com › google › gson › JsonArray.html
JsonArray - gson 2.6.2 javadoc
Bookmarks · Latest version of com.google.code.gson:gson · https://javadoc.io/doc/com.google.code.gson/gson · Current version 2.6.2 · https://javadoc.io/doc/com.google.code.gson/gson/2.6.2 · package-list path (used for javadoc generation -link option) · https://javadoc.io/doc/com.goog...