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

时间:2016-07-28 17:18:33

标签: java json gson

假设我试图获得这样的Json结构:

JsonArray

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

  1. 如何指定"rows"的名称?我需要在Json中命名JsonArray
  2. 如何将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. (我假设这是外括号的含义)?
  3. 这是我用来执行此操作的代码:

    rows

    我需要将logs添加到JsonObject。但是,.add(JsonElement)似乎只有.addProperty(String, variousTypes)popis,并且没有添加数组的内容。我错过了什么?

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

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:1)

您可以使用方法JsonObject.add()添加JsonElementJsonArray继承自:{/ p>

logs.add("rows", rows)

然后在反序列化时,您可以将其强制转换为JsonArray