Loop Json array with gson

Im trying to parse jsonObject and doesn't seem to be able to get it, that's what I got.

json = (json data) JsonParser parser = new JsonParser(); JsonObject rootObj = parser.parse(json).getAsJsonObject(); JsonObject paymentsObject = rootObj.getAsJsonObject("payments"); for(JsonObject pa : paymentsObject){ String dateEntered = pa.getAsJsonObject().get("date_entered").toString(); } 

But I get a non-type foreach that I am missing. I tried different ways, but didn't seem to understand. thanks

Json

  { "Name":"Test 2", "amountCollected":"1997", "payments":[ { "quoteid":"96a064b9-3437-d536-fe12-56a9caf5d881", "date_entered":"2016-05-06 08:33:48", "amount":"1962", }, { "quoteid":"96a064b9-3437-d536-fe12-56a9caf5d881", "date_entered":"2016-05-06 08:33:08", "amount":"15", }, { "quoteid":"96a064b9-3437-d536-fe12-56a9caf5d881", "date_entered":"2016-05-06 03:19:08", "amount":"20", } ] } 
+6
source share
1 answer

Now that we can see the data, we can see that payments is actually an array (values ​​use [] ).

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

Remember that each array value 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(); } 
+13
source

All Articles