2016-01-26 6 views
8

Ich benutze Gson mit Retrofit, und ich habe einen Fall, wo ich ein einzelnes Null-Feld serialisieren muss, aber ich kann nicht die globale serializeNulls() Flag für Gson, weil es den Rest meines Codes brechen wird. Weiß jemand, wie man das erreicht?GSON: Serialize ein einziges Null-Feld ohne die Verwendung der globalen serializeNulls()

Hier ist, was ich versucht habe:

  • eine Anmerkung machen @SerializeNull. Dies wäre die ideale Lösung, aber es ist fehlgeschlagen, da das serializeNulls-Flag tatsächlich auf dem JsonWriter ist, der sich hinter der ExclusionStrategy befindet.
  • Verwenden Sie eine TypeAdapterFactory. Auch hier ist der JsonWriter downstream.

Ich konnte auch nicht einen Weg finden, um die serialisierten json hinzuzufügen, da es in sich Retrofit passiert.

Antwort

0

löste ich dieses Problem, indem setSerializeNulls (true) und die Wiederherstellung ursprünglichen Wert JsonWriter in TypeAdapter.write() Einstellung:

public class NullableDoubleAdapter extends TypeAdapter<NullableDouble> { 

    @Override 
    public void write(final JsonWriter out, final NullableDouble value) throws IOException { 
    if (value == null) { 
     boolean serializeNulls = out.getSerializeNulls(); 
     out.setSerializeNulls(true); 
     out.nullValue(); 
     out.setSerializeNulls(serializeNulls); 
    } else { 
     out.value(value.getValue()); 
    } 
    } 
... 
+0

was ist die Umsetzung der Lesemethode? –

Verwandte Themen