Wie kann ich ein JSON-Objekt deserialisieren, aber ein bestimmtes Feld als String anstelle eines verschachtelten Objekts beibehalten?

8

Ich habe eine JSON-Struktur, die ich unten eingefügt habe. Ich möchte das JSON in einen Java-POJO mit Gson deserialisieren, was ziemlich einfach ist, außer dass ich eines der Felder, data , als einen String-Typ anstelle eines geschachtelten Objekts behalten möchte. p>

JSON-Struktur

%Vor%

Mein POJO würde dann so aussehen:

%Vor%

Das Feld data sollte als JSON-formatierter String erhalten bleiben.

Ich habe versucht, eine benutzerdefinierte TypeAdapter zu implementieren und das Feld als String zu lesen, aber es schlägt mit Expected a string but was BEGIN_OBJECT fehl.

Ich möchte auch, dass die Struktur auch bei der Serialisierung beibehalten wird - damit ich das POJO wieder in die ursprüngliche JSON-Struktur serialisieren kann.

Bearbeiten Benutzerdefiniert TypeAdapter :

%Vor%     
howettl 09.06.2015, 19:55
quelle

2 Antworten

5

Sie könnten einen benutzerdefinierten JsonDeserializer wie dieser:

%Vor%

Und du benutzt es so:

%Vor%

Der schlechte Teil ist, dass es nicht so schnell ist wie der, den Sie geschrieben haben, aber Sie können zumindest benutzerdefinierte Parsing-Funktionen wie diese durchführen.

    
Cata 09.06.2015, 21:32
quelle
0

Verwenden Sie diese benutzerdefinierte Klasse, fügen Sie hinzu, was Sie brauchen:

%Vor%

ENDBEARBEITUNG:

Da was Sie wollen, ist nur ein Teil Ihres JSON, um ein JSONed String zu bleiben, von all dem könntest du nur brauchen (was nur JsonPath bedeutet):

%Vor%     
TommySM 09.06.2015 20:31
quelle

Tags und Links