Java 在Gson中,如何向JsonObject添加JsonArray?

Java 在Gson中,如何向JsonObject添加JsonArray?,java,json,gson,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_descri

假设我正在尝试获得如下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中将其命名为“行”
  • 如何将
    JsonArray
    添加到
    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.
    
    我需要将
    添加到
    日志
    。但是,
    JsonObject
    只显示有
    .add(jsonement)
    .addProperty(String,variousTypes)
    ,没有添加数组的内容。我错过了什么


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

    JsonArray
    JsonElement
    的一个实例。因此,方法
    .add(“name”,element)
    ,其中element是
    JsonArray
    ,应该可以正常工作。

    您可以使用该方法添加
    jsonellement
    ,该
    JsonArray
    继承自:

    logs.add("rows", rows)
    

    然后,当反序列化它时,您可以将它转换回一个
    JsonArray

    您正在使用Gson,那么为什么您要手动构建JSON而不使用Java类序列化?@cricket\u 007,因为这些类与我正在构建的JSON完全不同。查看我的编辑。尝试此
    日志。添加(“行”,行)@我知道我错过了一些简单的事情。如果你想把它写进一个答案中,我会接受的。你可以接受现有答案中的一个(好的;)顺便说一句,
    JsonArray
    扩展了
    JsonElement
    ,而不是instanceYes,更详细地说,JsonArray的实例也是JsonElement的实例,因为它们的子类/超类关系。