Angenommen, dass ich eine Json-Struktur zu erhalten, wie dies versuchen:In Gson, wie füge ich ein JsonArray zu einem JsonObject hinzu?
{
"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
]
}
Einige Fragen zu diesem Json Aufbau:
- Wie kann ich den Namen der
JsonArray
angeben? Ich brauche es benannt zu werden, in der JSON,"rows"
. - Wie kann ich die
JsonArray
rows
zu einerJsonObject
hinzufügen (ich nehme an, das ist, was die äußeren Klammern bedeuten)?
Dies ist der Code, dass ich es tun, bin mit:
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.
Ich brauche rows
zu logs
hinzuzufügen. JsonObject
scheint jedoch nur .add(JsonElement)
und .addProperty(String, variousTypes)
zu haben, und nichts, um ein Array hinzuzufügen. Was vermisse ich?
EDIT: Ich verwende nicht Gson, um Objekte zu serialisieren, weil der Json aus Datenelementen von jedem von mehreren Protokollen besteht (und nicht einmal in der Nähe aller Informationen in jedem Protokoll).
zurückgeworfen Sie Gson verwenden Warum erstellen Sie manuell JSON und verwenden keine Java-Klassenserialisierung? –
@ cricket_007 Weil die Klassen nichts wie die Json aussehen, die ich baue. Siehe meine Bearbeitung. –
Probieren Sie diese 'logs.add (" Zeilen ", Zeilen);' !! – Maraboc