json-deserialization

___ answer35870222 ___

Wie Dariusz bereits erwähnt hat, ist es gut, die Tatsache auszunutzen, dass %code% class den Konstruktor akzeptiert, der das normale Array akzeptiert.

Wenn Sie den Standard-Serializer verwenden, sieht Ihr Array nach JSON serialisiert wie folgt aus:

%Vor%

Es ist eindeutig eine Verschwendung von Speicherplatz, es sei denn, Sie möchten, dass die Felder %code% und %code% beibehalten werden.

Ich schlage vor, dass Sie die Art ändern, wie Sie Ihr Objekt serialisieren, so dass es mehr wie ein normales Array aussieht. Am anderen Ende kann die Deserialisierung %code% -Objekt wieder aufbauen.

Wenn Sie das folgende Paar Serializer und Deserializer hinzufügen:

%Vor%

Sie haben eine transparente Konvertierung zwischen diesen Typen

    
___ answer35870163 ___

Eine Möglichkeit ist es, einen Serializer wie

zu schreiben %Vor%

Und ein Deserializer wie

%Vor%

Dann beschriften Sie die Eigenschaft, die ein solches Array mit %code% enthält.
Wenn Sie Ihre Arrayimplementierung direkt anstelle einer Containerklasse verwenden, enthält diese Seite ein Beispiel zum Registrieren von Serialisierungshandlern zur Laufzeit Ссылка

Ich sollte beachten, dass ich in dieser Antwort die Jackson 1.9 API benutze und die 2.x könnte etwas anders sein. Laut Ссылка sind die auffälligsten Unterschiede die Änderungen in den Paketnamen und wo sich einige Klassen befinden. Ansonsten sollte dieser Code nicht betroffen sein.

    
___ qstnhdr ___ Wie kann ich Jackson dazu bringen, in meine eigene Array-Implementierung zu deserialisieren? ___ qstntxt ___

Wie kann ich Jackson meine eigene Array-Implementierung %code% nennen, damit es aus einem JSON-Array in %code% deserialisieren kann? Bis jetzt bekomme ich nur diese Ausnahme:

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123json ___ JSON (JavaScript Object Notation) ist ein Textdatenaustauschformat und sprachunabhängig. Verwenden Sie dieses Tag, wenn dieses Textformat beteiligt ist. VERWENDEN SIE DIESEN TAG NICHT FÜR NATIVE JAVASCRIPT-OBJEKTE ODER JAVASCRIPT OBJECT LITERALS. Bevor Sie eine Frage stellen, wenn Sie glauben, dass Ihr JSON gültig ist, überprüfen Sie diese bitte in einem JSON-Validator wie JSONLint, damit Ihre Frage beantwortet wird, bevor Sie sie überhaupt stellen. ___ tag123jackson ___ Jackson ist eine Java-Bibliothek für Aufgaben wie Lesen und Schreiben (Parsen / Generieren) und Datenbindung an / von Java-Objekten. Obwohl Jackson hauptsächlich für JSON verwendet wird, unterstützt Jackson auch viele andere Datenformate wie Avro, CBOR, CSV, Java-Eigenschaften, Protobuf, Smile, XML und YAML. ___ tag123jsonderserialization ___ Die Jszer-Deserialisierung ist der Prozess, bei dem eine json-Zeichenfolge in eine Instanz eines Objekts konvertiert wird, oft eine Klasse. ___ answer35868509 ___

Die Array-Klasse von libgdx hat einen Konstruktor, der ein Array akzeptiert: %code% .

Anstatt zu versuchen, das libgdx-Array zu serialisieren, verwenden Sie eine einfache Klasse mit einem Array als Basis für die Serialisierung / Desrialisierung und erstellen dann ein libgdx-Array basierend auf den deserialisierten Daten.

Im Allgemeinen ist es eine gute Regel, nur POJO-artige Objekte zu serialisieren.

Kurz gesagt:

%Vor%     
___
4
Antworten

Swifts JSONDecoder mit mehreren Datumsformaten in einer JSON-Zeichenkette?

Swift's JSONDecoder bietet eine dateDecodingStrategy Eigenschaft, die es uns erlaubt zu definieren, wie eingehende Datenfolgen in Übereinstimmung mit einem DateFormatter Objekt interpretiert werden. Ich arbeite jedoch derzeit mit ein...
21.06.2017, 17:30
3
Antworten

Wie können Aufrufe von .serializeWithType () einer Klasse ausgelöst werden, die JsonSerializable in Jackson implementiert?

Das ist Jackson 2.2.x. Ich habe eine Klasse, die JsonSerializable ; Für diese Schnittstelle gibt es zwei Methoden, serialize() und serializeWithType() . Ich möchte {de} Serialisierung dieser Klasse testen, und ich kann Aufrufe von...
31.10.2014, 10:20
1
Antwort

Wie kann die Sammlung mit verschiedenen Typen deserialisiert werden?

Ich habe einen JSON-Feed, der so aussieht (ich habe einige Felder entfernt, die für dieses Beispiel nicht notwendig sind): %Vor% In diesem Feed gibt es zwei Arten von Transaktionen: interne Transaktionen mit einem recipient und externe Tr...
15.06.2014, 12:47
3
Antworten

Wie kann ich Jackson dazu bringen, in meine eigene Array-Implementierung zu deserialisieren?

Wie kann ich Jackson meine eigene Array-Implementierung MyArray<T> nennen, damit es aus einem JSON-Array in MyArray<T> deserialisieren kann? Bis jetzt bekomme ich nur diese Ausnahme: %Vor%     
03.03.2016, 17:15