如何使用GSON从这个JSON生成Java对象?
JSON: 我对对象的尝试:如何使用GSON从这个JSON生成Java对象?,java,json,gson,Java,Json,Gson,JSON: 我对对象的尝试: {"station":[{"id":"p2","websiteId":"p2","name":,"label":"Price","latitude":,"longitude":,"zip":"","region":"South"}],"parameters":{"ozone":{"value":"0.044","unit":" ppm","color":"17,250,11","colorHex":"11fa11","arrow":"unchange_gray"},
{"station":[{"id":"p2","websiteId":"p2","name":,"label":"Price","latitude":,"longitude":,"zip":"","region":"South"}],"parameters":{"ozone":{"value":"0.044","unit":" ppm","color":"17,250,11","colorHex":"11fa11","arrow":"unchange_gray"},"pm25":{"value":"NA","unit":"","color":"000000","colorHex":"000000","arrow":""},"temperature":40.4,"wind_speed":4.5,"wind_dir":"SE"},"seasonalParameter":"ozone","forecast":[],"version":"1.5"}
公共类AirObjects{
@序列化名称(“站点”)
公共列表站数据;
公营电台{
@序列化名称(“id”)
公共字符串id;
@SerializedName(“参数”)
公共参数;
}
保护级臭氧
{
@序列化名称(“值”)
公共字符串U值;
@序列化名称(“单位”)
公用臭氧发生器;
@SerializedName(“colorHex”)
公共字符串颜色;
@序列化名称(“箭头”)
公共字符串箭头;
}
受保护类参数
{
@序列化名称(“臭氧”)
公众臭氧;
@序列化名称(“温度”)
公共串温度;
@序列化名称(“风速”)
公共弦风速;
@序列化名称(“wind_dir”)
公共弦风向;
}
受保护类别网站
{
@序列化名称(“id”)
公共字符串id;
@SerializedName(“网站ID”)
公共字符串网站ID;
@序列化名称(“名称”)
公共字符串名称;
@序列化名称(“标签”)
公共字符串标签;
@序列化名称(“纬度”)
公共字符串纬度;
@序列化名称(“经度”)
公共字符串经度;
@序列化名称(“zip”)
公共字符串压缩;
@序列化名称(“区域”)
公共区域;
}
}
这是json的结构(您可以使用它查看json值的结构):
现在,您应该为此结构定义POJO
站
数组,参数
对象,季节参数
字符串、version
String和forecast
数组位于
json。因此,您应该定义一个包含这些字段的POJO站
是一个数组,它有一个对象,该对象具有id
,
websiteId
,name
等字段。因此,您应该为其定义POJO
有这些字段的站点参数
是具有臭氧
,pm25
,温度
的对象,
风速
和风向
字段。因此,您应该定义一个具有这些字段的POJOozone
和pm25
具有相同的字段,因此它们应该是同一类的
实例。您应该为它们定义一个POJOpublic class AirObjects {
@SerializedName("station")
public List<Station> stationData;
public class Station {
@SerializedName("id")
public String id;
@SerializedName("parameters")
public Parameters parameters;
}
protected class Ozone
{
@SerializedName("value")
public String ozone_value;
@SerializedName("unit")
public String ozone_unit;
@SerializedName("colorHex")
public String ozone_color;
@SerializedName("arrow")
public String arrow;
}
protected class Parameters
{
@SerializedName("ozone")
public Ozone ozone;
@SerializedName("temperature")
public String temperature;
@SerializedName("wind_speed")
public String windSpeed;
@SerializedName("wind_dir")
public String windDirection;
}
protected class Sites
{
@SerializedName("id")
public String id;
@SerializedName("websiteId")
public String websiteId;
@SerializedName("name")
public String name;
@SerializedName("label")
public String label;
@SerializedName("latitude")
public String latitude;
@SerializedName("longitude")
public String longitude;
@SerializedName("zip")
public String zip;
@SerializedName("region")
public String region;
}
}
2) 波乔车站:
public class Holder {
private Station[] station;
private Parameters parameters;
private String seasonalParameter;
private String version;
private Object[] forecast;
}
3) 参数字段的POJO:
public class Station {
private String id;
private String websiteId;
private String name;
private String label;
private String latitude;
private String longitude;
private String zip;
private String region;
}
4) 臭氧和pm25领域的POJO:
public class Parameters {
private Param ozone;
private Param pm25;
private double temperature;
private double wind_speed;
private String wind_dir;
}
测试:
public class Param {
private String value;
private String unit;
private String color;
private String colorHex;
private String arrow;
}
注意:您共享的Json示例不是有效的Json。“名称”:“纬度”:“经度”:“名称”:“纬度”:“经度”:”更改为“名称”:“经度”:“以使您的json有效。有什么问题吗?我得到的id很好,但对于其他内容,我得到的id为空。首先,您缺少很多字段。如果你想定义一个映射到JSON的POJO,你需要一个字段一个字段地检查它,并确保你拥有所有的POJO。
String json = "{\"station\":[{\"id\":\"p2\",\"websiteId\":\"p2\",\"name\":\"\",\"label\":\"Price\",\"latitude\":\"\",\"longitude\":\"\",\"zip\":\"\",\"region\":\"South\"}],\"parameters\":{\"ozone\":{\"value\":\"0.044\",\"unit\":\" ppm\",\"color\":\"17,250,11\",\"colorHex\":\"11fa11\",\"arrow\":\"unchange_gray\"},\"pm25\":{\"value\":\"NA\",\"unit\":\"\",\"color\":\"000000\",\"colorHex\":\"000000\",\"arrow\":\"\"},\"temperature\":40.4,\"wind_speed\":4.5,\"wind_dir\":\"SE\"},\"seasonalParameter\":\"ozone\",\"forecast\":[],\"version\":\"1.5\"}";
Gson gson = new Gson();
Holder item = gson.fromJson(json, Holder.class);