我试图解析一个jsonObject而且似乎无法得到它,这就是我得到的。
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();
}
但我得到一个不适用于键入我缺少的东西的foreach。我尝试了不同的方法,但似乎无法得到它。感谢
的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",
}
]
}
答案 0 :(得分:31)
现在我们可以看到数据,我们可以看到payments
实际上是一个数组(值使用[]
)。
这意味着您需要致电rootObj.getAsJsonArray("payments")
并返回JsonArray
,这是Iterable<JsonElement>
,这意味着您的循环应为for(JsonElement pa : paymentsObject)
。
请记住,数组的每个值都可以是任何类型的Json元素(对象,数组,字符串,数字......)。
您知道它们是JsonObject
,因此您可以在其上致电getAsJsonObject()
。
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();
}