循环 Json 数组与 gson

2022-09-01 18:22:12

我试图解析一个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();
    }

但是我得到一个不适用于键入我缺少的内容的前额。我尝试了不同的方法,但似乎无法理解。谢谢

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",         
  }
 ]
}

答案 1

现在我们可以看到数据,我们可以看到它实际上是一个数组(值使用)。payments[]

这意味着你需要调用哪个返回 a ,它是一个 ,这意味着你的循环应该是 。rootObj.getAsJsonArray("payments")JsonArrayIterable<JsonElement>for(JsonElement pa : paymentsObject)

请记住,数组的每个值都可以是任何类型的 Json 元素(对象、数组、字符串、数字等)。

您知道它们是 ,因此您可以调用它们。JsonObjectgetAsJsonObject()

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();
}

答案 2