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
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.
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%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%