Leeres json-Objekt, das anstelle von null, wenn keine Daten -> wie Deserialisieren mit gson
Ich versuche zu Parsen von json-Daten mit Google-gson-Bibliothek. Aber die json-Daten nicht gut Verhalten.
Sieht es wie folgt aus, wenn alles in Ordnung ist:
{
"parent": {
"child_one": "some String",
"child_two": "4711",
...
}
}
child_one
sollte analysiert werden, wie String
, child_two
als int
.
Manchmal hat man aber auch von den Kindern keine Werte hat, welche Ergebnisse in einem leeren Objekt statt null
wie diese:
{
"parent": {
"child_one": "some String",
"child_two": {},
...
}
}
Habe ich keinen Zugriff zum ändern der json-feed, so dass ich zu tun haben mit ihm während der Deserialisierung.
Aber ich bin hier verloren. Wenn ich nur lassen Sie es analysieren, den 2. Fall gibt mir ein JsonSyntaxException
.
Ich dachte über die Verwendung einer benutzerdefinierten JsonDeserializer
. Gibt es so etwas wie überprüfen Sie jedes element, wenn es ein JsonObject
und wenn es ist, überprüfen Sie, ob die entrySet.isEmpty()
. Wenn ja, entfernen Sie das element.
Aber ich habe keine Ahnung, wie das zu erreichen ist die Iteration...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht einfach ersetzen Sie {} mit NULL vor der übergabe an die GSON?
null
wäre immer noch ungültig, da OP hat, zu analysieren, zuint
.json.toString().replace("{}", "null");
Machen Sie Ihre
TypeAdapter<String>
'sread
Methode wie diese:Erklären: wenn das nächste token ist
[
oder]
, gerade lassen es aus und gibt null zurück.Wenn Sie ersetzen Sie alle
[]
zunull
verwendenString#replaceAll
direkt, einige echte Zeichenfolge ersetzt werden kann, wie gut, kann Dies dazu führen, dass einige andere bugs.