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

标签 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  
  ]
}

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

  1. 如何指定 JsonArray 的名称?我需要在 Json 中将其命名为 "rows"
  2. 如何将 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/

相关文章:

java - Jackson 使用特殊字符写入文件

java - 需要从中获取 JSONObjects

java - Elasticsearch异常: mappping depth in index has been exceeded

android - 如何在 android 中从 Gson 存储和检索对象?

java - JSP中显示JSON数据时出现异常

java - 我想让我的 java 程序在 Windows 的任务栏和 Mac 的 Dock 中都有一个图标

java - 在 servlet 中恢复控制后如何恢复该值?

java - Oracle 引用游标的结果集很慢

java - 验证输入对话框

java - 使用 GSON 反序列化通用数据类型