假设我正在尝试获得这样的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
  ]
}

有关构建此Json的一些问题:
  • 如何指定JsonArray的名称?我需要在Json中将其命名为"rows"
  • 如何将JsonArray rows添加到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.
    

    我需要将rows添加到logs。但是,JsonObject似乎只具有.add(JsonElement).addProperty(String, variousTypes),没有添加数组的内容。我想念什么?

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

    最佳答案

    JsonArrayJsonElement的实例。因此,方法.add("name", element)(其中element是JsonArray)应该可以正常工作。

    关于java - 在Gson中,如何将JsonArray添加到JsonObject?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38642868/

    10-12 22:29