2016-10-07 1 views
0

Ich verwende GSON mit Retrofit, um ein JSON-Objekt im Anfragetext zu senden. Ich möchte transiente Felder in Serialisierung einschließen, also habe ich excludeFieldsWithModifiers (Modifier.STATIC) aufgerufen, aber sie sind immer noch nicht im JSON-Anfragetext enthalten.Android - Wie wird ein transientes Feld in ein serialisiertes Objekt mit GSON eingefügt?

 // Retrofit Initialization 
     GsonBuilder gsonBuilder = new GsonBuilder(); 
     gsonBuilder.excludeFieldsWithoutExposeAnnotation(); 
     gsonBuilder.excludeFieldsWithModifiers(Modifier.STATIC); 

     retrofitBuilder = new Retrofit.Builder(); 
     retrofitBuilder.baseUrl(BASE_URL); 
     retrofitBuilder.addConverterFactory(GsonConverterFactory.create(gsonBuilder.create())); 
     Retrofit retrofit = retrofitBuilder.build(); 

     // Field to be serialized 
     @Expose(deserialize = false, serialize = true) 
     @SerializedName("Name") 
     private transient String name; 
+0

Ähm ... Der ganze Sinn des 'transient' Schlüsselwort ist Serializer zu informieren, dass das Feld ist * nicht * serialisiert werden. "Transiente Felder in Serialisierung einschließen" ist eine sich widersprechende Aussage. Wenn das Feld serialisiert werden soll, muss der Modifikator 'transient' entfernt werden. Es wird sonst nicht funktionieren. –

+0

Ich verwende das vorübergehende Schlüsselwort, weil ich das Objekt serialisieren und es auch in einer Datei speichern, und ich möchte nicht, dass dieses Feld in diesem Fall serialisiert wird. Und gemäß dieser [Anleitung] (https://sites.google.com/site/gson/gson-user-guide) sollte die Methode excludeFieldsWithModifiers (Modifier.STATIC) nur Variablen mit dem Modifikator "static" ausschließen. – Marco

+0

Ich stehe korrigiert. Ihr Code sieht so aus, als sollte er wie erwartet funktionieren. Sie müssen Einblick in den Serialisierungsprozess erhalten. Ich schaute durch Gson, um zu sehen, wie Sie die Serialisierung debuggen/verfolgen konnten, aber ich konnte nichts finden. Ich nehme an, Sie könnten den Quellcode herunterladen und auf diese Weise debuggen, aber das klingt schmerzhaft. Entschuldigung für die Snarkiness. –

Antwort

0

Verwenden transientes Stichwort

transient public Drawable icon; 
Verwandte Themen