2017-01-01 68 views
6

Dizisi olan bir Json dosyasını seri hale getirmem gerekiyor. Liste nesnesini elde etmek için nasıl serileştirileceğini biliyorum, ancak çerçevede Java Liste arayüzünü uygulamamış özel bir liste nesnesi kullanıyorum. Sorum şu; özel liste nesnesine nasıl bir desperizer yazabilirim?Gson'da özel bir liste oluşturucu nasıl oluşturulur?

DÜZENLEME: Ben her için deserializer yapmak can sıkıcı olurdu çünkü deserializer, CustomList<Integer> gibi, bunu listenin her türlü ot işi istediğiniz CustomList<String>, listenin CustomList<CustomModel> değil sadece belirli bir tür, yani evrensel olmak istiyorum tür kullanıyorum.

Gson gson = new GsonBuilder() 
     .registerTypeAdapter(CustomList.class, new CustomListConverter()) 
     .create(); 
+2

Neden Java sınıfı ilk ilk bu serisini yok ve daha sonra kendi trafosu yazın:

class CustomListConverter implements JsonDeserializer<CustomList<?>> { public CustomList deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext ctx) { Type valueType = ((ParameterizedType) typeOfT).getActualTypeArguments()[0]; CustomList<Object> list = new CustomList<Object>(); for (JsonElement item : json.getAsJsonArray()) { list.add(ctx.deserialize(item, valueType)); } return list; } } 

şöyle Kayıt: –

+0

[this] 'a bakın (http://stackoverflow.com/questions/16590377/custom-json-deserializer-using-gson) –

+0

@ReazMurshed Bunu yapabilirdim ama sonra onu bir nesne modeline seriyorum. kodumun kalanında kullan. ModelJson'ın Java'dan Liste arayüzünü kullandığı ve sadece seri hale getirme için kullanıldığı ve Model sınıfına dönüştürdüğü bir ModelJson sınıfı ve bir Model sınıfı yapabilirim. Bununla ilgili problem şudur ki bunu yapmak için çok fazla dersim var, bu yüzden biraz acı çekiyor ve ayrıca daha şık bir çözüm olup olmadığını merak ediyorum. Eğer olmazsa, zor kodlama yolundan aşağı ineceğim ama dilemem gerekmeyecekti. – BananyaDev

cevap

2

Bu

ben ile geldi budur özel liste nesnesi?
+0

Geç cevap için özür dilerim. Cevabınız gerçekten doğru. Çok teşekkür ederim efendim. – BananyaDev