在Gson中,如何将JsonArray添加到JsonObject?

Cac*_*eli 4 java json gson

假设我正在尝试获得这样的Json结构:

{
  "rows": [
    {
      "date_str": "2016-07-01",
      "sleep_7_or_more_hours": true,
      "activity_minutes": "0",
      "water_5_or_more_cups": true,
      "fruit_veg_4_or_more_servings": true,
      "physical_activity_description": "walking"
    }
    {
      "date_str": "2016-07-02",
      "sleep_7_or_more_hours": true,
      "activity_minutes": "30",
      "water_5_or_more_cups": true,
      "fruit_veg_4_or_more_servings": true,
      "physical_activity_description": "walking"
    }  
    ...etc  
  ]
}
Run Code Online (Sandbox Code Playgroud)

关于构建这个Json的一些问题:

  1. 我该如何指定名称JsonArray?我需要它在Json中命名"rows".
  2. 如何添加JsonArray rows到a JsonObject(我假设外括号的意思是什么)?

这是我用来做的代码:

JsonArray rows = new JsonArray();

//Code to get local dates omitted
for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1))
{
    JsonObject row = new JsonObject();

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-mm-dd", Locale.ENGLISH);
    String dateString = date.format(formatter);
    row.addProperty("date_str", dateString);

    boolean sleptLongEnough = (sleepLog.getTimeInBed(getDate(date)) > (7 * 60));
    row.addProperty("sleep_7_or_more_hours", sleptLongEnough);

    int activityMinutes = (activitiesLog.getMinutesVeryActive(getDate(date)) + activitiesLog.getMinutesFairlyActive(getDate(date)));
    ...
    //Omitted extra code
    rows.add(row);
}
JsonObject logs = new JsonObject();
//add rows to logs here.
Run Code Online (Sandbox Code Playgroud)

我需要添加rowslogs.但是,JsonObject似乎只有.add(JsonElement).addProperty(String, variousTypes),并且没有添加数组.我错过了什么?

编辑:我没有使用Gson序列化对象,因为Json由来自几个日志中的每一个的数据项组成(甚至不接近每个日志中的所有信息).

the*_*wmo 20

JsonArray是一个实例JsonElement.所以.add("name", element)元素是a 的方法JsonArray应该可行.

  • 是的,更详细地说,由于它们的子类/超类关系,JsonArray 的实例也是 JsonElement 的实例。 (2认同)