2016-06-29 39 views
0

我旁邊JSON:如何在Gson中設置字段名稱,如果它的值?

{ 
    "Regions": [ 
    { 
     "Id": "NA", 
     "Label": "North America" 
    }, 
    { 
     "Id": "EUR", 
     "Label": "Europe" 
    }, 
    { 
     "Id": "ASIA", 
     "Label": "Asia" 
    }, 
    { 
     "Id": "AUS", 
     "Label": "Australia" 
    } 
    ], 
    "Stations": { 
    "EUR": [ 
     "Kiyv", 
     "Astana" 
    ], 
    "NA": [ 
     "Kosovo"   
    ] 
    } 
} 

正如你看到Stations節鍵名稱是相同Regions部分中的每個項目的值。

我的POJO類

public class Provisions { 
    @SerializedName("Regions") 
    public List<Region> regions; 

    @SerializedName("Stations") 
    public List<Station> stations; 
} 

public class Region { 
    @SerializedName("Id") 
    public String id; 

    @SerializedName("Label") 
    public String label; 
} 

public class Station { 
    // what should be put here? 
} 

我的問題是:如何以更優雅的方式聲明POJO,使我的生活在未來更容易:爲前:如果後端添加新的地區和車站,我不會想要修改POJO - 全部將自動解析。

也許它會通過泛型完成?

+0

現在'Stations'是字符串,字符串列表的圖.. 。不是'Station'列表...所以'Map >站點'應該工作,並且應該工作,如果你想添加新的區域或站 – Selvin

回答

0

重新定義你的類的規定如下:

public class Provisions { 
    @SerializedName("Regions") 
    private List<Region> regions; 

    @SerializedName("Stations") 
    private Map<String, List<String>> stations; 
} 

然後你就可以反序列化使用類似代碼:

Gson gson = new GsonBuilder().create(); 
Provisions provisions = gson.fromJson(JSON_VALUE, Provisions.class); 
相關問題