Java 使用gson解析两个(或更多)对象中包含同名字段的json

Java 使用gson解析两个(或更多)对象中包含同名字段的json,java,json,gson,Java,Json,Gson,我有一个json文件,我想解析它。 这是我的json: { "weather": [ { "id": 802, "main": "Clouds", "description":"Rainy", "icon": "03d" } ], "visibility": 10000, "dt": 1497028800, "id": 26437

我有一个json文件,我想解析它。 这是我的json:

{
    "weather": [
        {
            "id": 802,
            "main": "Clouds",
            "description":"Rainy",
            "icon": "03d"
        }
    ],
    "visibility": 10000,
    "dt": 1497028800,
    "id": 2643743,
    "name": "London",
    "cod": 200
}
我想将此json解析为java代码,因此我的代码如下所示:

public class CurrentWeather {

    public class Weather{
        @SerializedName("id")
        private String id;
        @SerializedName("main")
        private String title;
        @SerializedName("description")
        private String description;
    }

    @SerializedName("id")
    private String id;
    @SerializedName("name")
    private String city;
}
如您所见,json中有两个“id”;一个在json主体中,另一个在weather对象中,我在java代码中的两个字段中使用
@SerializedName(“id”)
。我肯定这不是正确的方法。 所以我的问题是,我应该如何解析这段代码?

公共类CurrentWeather{
public class CurrentWeather {

    private List<Weather> weather;
    @SerializedName("id")
    private String id;
    @SerializedName("name")
    private String city;
}

 public class Weather{
        @SerializedName("id")
        private String id;
        @SerializedName("main")
        private String title;
        @SerializedName("description")
        private String description;
    }
私人天气列表; @序列化名称(“id”) 私有字符串id; @序列化名称(“名称”) 私人城市; } 公共天气{ @序列化名称(“id”) 私有字符串id; @序列化名称(“主”) 私有字符串标题; @序列化名称(“说明”) 私有字符串描述; }
公共类CurrentWeather{
私人天气列表;
@序列化名称(“id”)
私有字符串id;
@序列化名称(“名称”)
私人城市;
}
公共天气{
@序列化名称(“id”)
私有字符串id;
@序列化名称(“主”)
私有字符串标题;
@序列化名称(“说明”)
私有字符串描述;
}

您有两次id,但不在同一类中。这是正确的方法。您只需将Weather[]类型的成员添加到您的CurrentWeather类中。您为什么要尝试解析Weather对象中的“描述”。。。json中没有“描述”键example@RAZ_Muh_Taz很抱歉不知怎的,它被删除了。刚刚修好it@rollback假设json中有更多带有“id”字段的对象,gson如何知道要解析哪个“id”?(抱歉英文不好,顺便说一下:))Gson以根对象开始。该根对象具有键“weather”、“visibility”、“dt”、“id”、“name”和“cod”。键“weather”后面的值是一个json对象列表,这些对象有自己的键。这是正确的方法。您只需将Weather[]类型的成员添加到您的CurrentWeather类中。您为什么要尝试解析Weather对象中的“描述”。。。json中没有“描述”键example@RAZ_Muh_Taz很抱歉不知怎的,它被删除了。刚刚修好it@rollback假设json中有更多带有“id”字段的对象,gson如何知道要解析哪个“id”?(抱歉英文不好,顺便说一下:))Gson以根对象开始。该根对象具有键“weather”、“visibility”、“dt”、“id”、“name”和“cod”。键“weather”后面的值是一个json对象列表,它们有自己的键。