繁体   English   中英

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

[英]How to set field name in Gson, if it comes as value?

我有下一个杰森:

{
  "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-所有操作都会自动解析。

也许可以通过泛型完成?

重新定义您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM