假設我想獲得一個JSON結構是這樣的:在Gson中,如何將JsonArray添加到JsonObject?
{
"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
(我假設這就是外括號的含義)?
這是我用來做它的代碼:我需要添加rows
到logs
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(JsonElement)
和.addProperty(String, variousTypes)
,並沒有添加任何數組。我錯過了什麼?
編輯:我不使用GSON因爲JSON是從每幾個日誌(甚至沒有靠近所有的信息在每個日誌)組成的數據項的序列化對象。
您正在使用GSON ,那麼爲什麼你要手動構建JSON而不使用Java類序列化? –
@ cricket_007因爲這些類看起來不像我正在建造的Json。看我的編輯。 –
試試這個'logs.add(「rows」,rows);'!! – Maraboc