Ist es möglich, Setter zu verwenden, wenn Gson einen JSON deserialisiert?

8

Gibt es eine Möglichkeit, die festgelegten Methoden einer bestimmten Klasse zu verwenden, wenn Sie die fromJson -Methode von Gson verwenden?

Ich würde das gerne machen, weil für jede String globale Variable der Zielklasse eine Trimmung gemacht wird.

Gibt es eine GSON-API-Anmerkung für diesen Vorgang?

Ich bin mir bewusst, dass GSON die Möglichkeit bietet, benutzerdefinierte Serialisierer / Deserialisierer zu schreiben, aber ich würde gerne wissen, ob es einen anderen Weg gibt, dies zu erreichen.

    
RedEagle 14.05.2014, 16:33
quelle

2 Antworten

1

Ich habe eine JsonDeserializer<String> implementiert und sie in GsonBuilder registriert. Also wird Gson für alle empfangenen String-Felder mein StringGsonTypeAdapter verwenden, um den Wert zu deserialisieren.

Unten ist mein Code:

%Vor%

... und mein GsonBuilder:

%Vor%     
hugonardo 12.05.2017, 07:10
quelle
13

Nein gibt es nicht. Gson arbeitet hauptsächlich durch Reflexion von Instanzfeldern. Also, wenn du nicht vorhast, nach Jackson zu ziehen, das diese Funktion hat, denke ich, dass du keine allgemeine Möglichkeit haben kannst, deine Setter zu nennen. Also gibt es keine Anmerkung dafür.

ABER

Um Ihr spezifisches Bedürfnis zu erreichen, könnten Sie:

  1. Schreiben Sie Ihren eigenen benutzerdefinierten TypeAdapter oder
  2. Erstellen Sie einen Konstruktor mit der Zeichenfolge, die Sie trimmen möchten, und erstellen Sie einen benutzerdefinierten InstanzCreator oder
  3. parsen Sie Ihren JSON als JsonObject , führen Sie eine Verarbeitung der Strings durch und Verwenden Sie dann dieses Objekt als Quelle für das Parsen in Ihre Klasse.

Ich kann Ihnen weitere Hinweise geben, solange Sie Code schreiben oder Informationen über Ihre Daten / JSON geben.

    
giampaolo 14.05.2014 21:40
quelle

Tags und Links