2016-03-29 21 views
3

ile JSON işleme işleci Arka uçtan (Retrofit kullanarak), anahtarının değeri olarak bir JSON nesnesini içerdiğinden veri alıyorum. Bu nesne için aşağıdaki sınıf yapısı yazdım:Retrofit

public class NotificationData { 
    @SerializedName("photo_pk") 
    @Expose 
    private int photoPk; 
    @SerializedName("gallery_pk") 
    @Expose 
    private int galleryPk; 
    @SerializedName("user_pk") 
    @Expose 
    private int userPk; 
} 

sorun null değilse bu nesnenin değeri herhangi bir alanı içeren photo_pk veya gallery_pk ya olabilir olabilir, null olabilir ya da olmasıdır gallery_pk ve user_pk olmalıdır. Eğer arka uç tüm alanları gönderir ve mevcut alanlar için null alanlarına değer verirse, mükemmel çalışırdı. Ancak bazı alanlar geldiğinden ve bazı durumlar olmadığından dolayı, arka uçtan gelen değerlerin düzgün bir şekilde eşleşmesini ve arka uçtan gelmeyen bu alanlar için, bunların null ya da başkalarının olmasını istiyorum varsayılan değer. Bunu nasıl başarabilirim? İşte

örnek JSON

{ 
    'display':{ 
     'image':'https://kdfnvdfkdvd', 
     'title':'fkfjkfdvfldvmdflv', 
     'large_text':'bvfdkvkdfv', 
     'icon':'something.jpg', 
     'image_format':'SQUARE' 
    }, 
    'data':{ 
     'image_pk':9 
    }, 
    'notif_id':8, 
    'screen':'IMAGE', 
    'priority':0, 
    'time':'2016-02-06 15:22:33', 
    is_read:False 
} 

Ben veridir bahsediyorum alandır. Değişken JSON içerir.

+0

Eğer ben @ankitaggarwal api çağrısı –

+0

sonra alıyorsanız örnek json paylaşabilir soruyu düzenledi. Bir göz atın. –

+0

Bu gson'un örneğini Retrofit'e aktarmaya çalışın. 'Gson gson = yeni GsonBuilder(). SerializeNulls(). Create();' –

cevap

3

int yerine Integer kullanın. Bu durumda değişkeniniz boş olabilir.

public class NotificationData { 
    @SerializedName("photo_pk") 
    @Expose 
    private Integer photoPk; 
    @SerializedName("gallery_pk") 
    @Expose 
    private Integer galleryPk; 
    @SerializedName("user_pk") 
    @Expose 
    private Integer userPk; 
} 
+0

teşekkürler, deneyeyim, eğer işe yararsa, cevabı kabul edeceğim. –