2015-11-15 54 views
0

我試圖獲取Java類反序列化這樣的: API Response 我使用http://www.jsonschema2pojo.org/爲得到我所需要的Java類。但與此JSON響應我得到這個:需要幫助反序列化JSON格式

public class CatalogueResponse { 
@SerializedName("0") 
    @Expose 
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._0 _0; 
    @SerializedName("1") 
    @Expose 
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._1 _1; 
    @SerializedName("2") 
    @Expose 
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._2 _2; 
    @SerializedName("3") 
    @Expose 
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._3 _3; 
    @SerializedName("4") 
    @Expose 
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._4 _4; 
    @SerializedName("5") 
    @Expose 
    private uex.asee.fjrm.multimediapp.api.pojos.catalogue._5 _5; 
    ... 
} 

但JSON的項目數是不同的,所以我不能處理它的方式。 我正在使用gson註釋。 任何想法?

+0

我能看看你的java JSON模式:

要使用GSON,試試下面的反序列化呢? – GVillani82

+0

不明白整個問題,只是關於API的建議:如果項目數量不同,但所有項目都相同,則應使用JSON數組:) – mithrop

+0

是的,@mithrop是正確的。這就是要求你的json模式 – GVillani82

回答

1

爲什麼你不嘗試使用一個地圖,然後序列化它。我建議使用TreeMap並將數字作爲鍵和值添加爲Catalog對象。例如:

Map<Integer, Catalogue> map = new TreeMap<>(); 
map.put(0, catalogue0); 
map.put(1, catalogue1); 
... 
// Now serialize the map. 

這將生成您需要的API響應。

Type mapType = new TypeToken<Map<Integer, Catalogue>>(){}.getType(); 
Map<Integer, Catalogue> catalogueMap = (Map<Integer, Catalogue>) gson.fromJson(json, mapType); 
+0

對不起,我真正想要的是對json進行反序列化。我說錯了,對不起。 – Javi

+0

@Javi嘗試^ –

+0

這看起來像是正確的方法,但是你的例子是用於傑克遜,而不是用javi說他正在使用的gson – iagreen