Ich habe eine Karte mit einer Mischung von Typen wie in diesem einfachen Beispiel
%Vor% Was ich zurückbekomme sind einfache Object
s, keine Integer
s, keine String
s. Die Ausgabe sieht wie
Kann ich es irgendwie reparieren? Ich würde erwarten, dass solche einfachen Fälle standardmäßig korrekt behandelt werden.
Ich weiß, dass die Information über den Typ nicht immer erhalten werden kann und möglicherweise 1
und "1"
bedeutet genau dasselbe in JSON. Die Rückgabe einfacher, inhaltsloser Objekte ergibt jedoch keinen Sinn für mich.
Update: Die serialisierte Version (d. h. das string
oben) sieht gut aus:
Gson ist nicht so schlau. Liefern Sie stattdessen eine klare und statische Datenstruktur im Geschmack einer Javabean-Klasse, damit Gson versteht, um welchen Typ die separaten Eigenschaften deserialisiert werden sollen.
z. B.
%Vor%in Kombination mit
%Vor%Update : Laut den Kommentaren scheint der Keyset nicht repariert zu sein (obwohl Sie in der Lage sind, ihn manuell zu konvertieren, ohne vorher die Struktur zu kennen). Sie könnten einen benutzerdefinierten Deserializer erstellen. Hier ist ein schnelles Beispiel.
%Vor%die Sie wie folgt verwenden:
%Vor% Wenn Sie eine JSON-Zeichenfolge von Map<Object, Object>
möchten, denke ich, json-simple
ist die bessere Wahl als Gson
.
Dies ist ein kurzes Beispiel aus Ссылка :
%Vor% Ergebnis: {"name":"foo","num":100,"balance":1000.21,"is_vip":true,"nickname":null}
Informationen zum Entschlüsseln finden Sie unter Ссылка .