使用gson

时间:2016-05-25 03:15:15

标签: java json

我试图解析一个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",         
  }
 ]
}

1 个答案:

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