如果它是值,如何在Gson中设置字段名称?

时间:2016-06-29 12:49:06

标签: java android json gson

我有下一个Json:

{
  "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,让我的生活更轻松:例如:如果后端添加新的Region和Station,我不会想要修改POJO - 所有都会自动解析。

也许它会通过泛型完成?

1 个答案:

答案 0 :(得分:0)

重新定义您的Provisions类,如下所示:

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);