反序列化以对象ID作为对象名称的JSON对象列表

时间:2018-11-04 12:30:48

标签: java json gson

因此,我需要解析Nest API中的这个有趣的Json,但遇到了困难。显然,我无法控制JSON。

{
    "uyuyuyuuyieiehuhuhuhenne": {
        "name": "Cabin",
        "country_code": "US",
        "postal_code": "94304",
        "time_zone": "America/Los_Angeles",
        "away": "home",
        "structure_id": "uyuyuyuuyieiehuhuhuhenne"
    },
    "ryryryyryryyryrryyryryyr": {
        "name": "Boulder Home",
        "country_code": "US",
        "postal_code": "80302",
        "time_zone": "America/Denver",
        "away": "away",
        "structure_id": "ryryryyryryyryrryyryryyr"
    }
}

对象名称是对象的ID。我有一个名为structure的对象,它包含一个List,但是在结构转换中我什么也没得到。

1 个答案:

答案 0 :(得分:1)

假设您有一个POJO,如:

@Getter
public class Structure {
    private String name;
    private String country_code;
    private String postal_code;
    private String time_zone;
    private String away;
    private String structure_id;
}

您可以使用Gson Map将JSON反序列化为TypeToken,例如:

Type t = new TypeToken<Map<String, Structure>>() {}.getType();
Map<String, Structure> map = new Gson().fromJson(JSON, t);

换句话说,您的JSON是Structure的映射,其中每个Structure的{​​{1}}作为键。