Wie kann ich bestimmte Werte beim Serialisieren eines Objektmodells in JSON mit GSON umbrechen? Beispielmodell:Bestimmte Werte bei der Serialisierung von JSON mit Gson übertragen
class Order {
Customer cust;
}
class Customer {
String name;
int age;
}
einen Kunden Serialisierung normalerweise etwas ergeben würde wie:
{cust:{name:joe, age:21}}
Was ich möchte, ist die Auftrags- und Kundenwerte in einem zusätzlichen Elemente mit dem Klassennamen tun wickeln. So ist die erwartete JSON wäre:
{Order:{cust:Customer:{name:joe, age:21}}}
Die tatsächlichen Klassen, die ich Serialisierung werde alles sein könnte, so kann ich nicht spezifische Eigenschaften in einem Serializer codieren. Aber ich möchte bestimmte Eigenschaften mit ihrem Klassennamen umhüllen.
Wie kann ich das tun?
Sie Sie * unbedingt * die Verpackung benötigen Teil, oder können Sie eine ähnliche Funktionalität erreichen, indem Sie Ihren Modellobjekten ein "clazz" -Feld hinzufügen? – Raffaele
Ich besitze nicht die Objekte, die ich serialisieren und deserialisieren werde, also kann ich ihnen nichts hinzufügen. – Josh
Sicher, aber zur Zeit der Serialisierung können Sie ein 'clazz'-Feld hinzufügen, das den vollständig qualifizierten Klassennamen enthält. Wenn Sie also deserialisieren, können Sie das' clazz' lesen und den Java-Typ mit 'Class.forName' zurückbekommen. Sie müssen dies nur für das Root-Element tun, da Sie dann die Standard-Gson-Routinen verwenden können. Ich habe tief in die Gson API und Quellen geschaut, und es scheint, dass die Art von * Dekoration *, die Sie suchen, unmöglich ist (zumindest fand ich keinen einfachen Weg, ohne die Quellen zu modifizieren). Es gibt natürlich andere Bibliotheken, und Sie könnten versuchen, anzugeben, warum der Typ der Antwort unbekannt ist. – Raffaele