2016-04-19 15 views
2

Ich möchte ein Java-Objekt zu JSON mit Googles GSON-Bibliothek serialisieren. Es funktioniert gut, außer wenn eine ArrayList auftritt. GSON kann den generischen Typ der ArrayList nicht verarbeiten. @ Yavor Georgiev hat eine Lösung mit der Methode registerSerializer (...) beschrieben, aber diese Methode ist in den neuen Releases nicht vorhanden.Serialisierung von ArrayList (generische Typen) mit GSON

gson.registerSerializer(ArrayList.class, new CollectionSerializer<Object>()); 

http://hashtagfail.com/post/44606137082/mobile-services-android-serialization-gson

die Arraylist In meinem Fall ist drei Schichten unter dem Objekt in einer Klasse verschachtelt, die toJSON(...) übergeben wird.

Weiß jemand, wie man dieses Problem löst?

Die Struktur ist wie folgt:

public class Data() { 
    @Expose 
    privat int number = 8; 
    @Expose 
    private Foo foo = new Foo(); 
} 

public class Foo() { 
    @Expose 
    private Bar bar = new Bar(); 
} 

import java.awt.Point; 
public class Bar() { 
    @Expose 
    ArrayList<Point> list = new ArrayList()<>; 
} 
+1

Bitte beachten Sie dies - http://stackoverflow.com/questions/20773850/gson-typetoken-with-dynamic-arraylist-item-type –

+0

In seinem Fall, dass er direkt den Typ angibt kann, weil er nur will um das Objekt 'src' wie' toJSON (src, type) 'zu konvertieren. Aber in meinem Fall hat das Objekt 'data' nicht den Typ' ArrayList', sondern 'Data'. – Baschdl

+0

lesen Sie die API auf GsonBuilder. Die Methode registerTypeAdapter scheint vielversprechend zu sein. – DwB

Antwort

1

Haben Sie einen Adapter versucht Registrierung.

new GsonBuilder().registerTypeAdapter(Object.class, new JsonSerializer<Object>() { 
      @Override 
      public JsonElement serialize(Object src, Type typeOfSrc, JsonSerializationContext context) { 
       return context.serialize(src); 
      } 
     }) 
+0

Aber ich bin mir nicht sicher, ob EgisterSerializer (ArrayList.class, new CollectionSerializer ()) bereits für Sie funktioniert hat; was ich denke, macht das gleiche thig –

Verwandte Themen