Java 使用gson解析两个(或更多)对象中包含同名字段的json
我有一个json文件,我想解析它。 这是我的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
{
"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对象列表,它们有自己的键。