首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用GSON从这个JSON生成Java对象?

如何使用GSON从这个JSON生成Java对象?
EN

Stack Overflow用户
提问于 2014-11-05 22:06:24
回答 1查看 512关注 0票数 1

杰森:

代码语言:javascript
运行
复制
{"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"}

我对物体的尝试:

代码语言:javascript
运行
复制
public 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;


    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-06 21:56:32

这是json的结构(可以使用http://jsonviewer.stack.hu查看json值的结构):

现在您应该为这个结构定义POJO。

  1. 在json的第一级有station数组、parameters对象、seasonalParameter字符串、version字符串和forecast数组。因此,您应该定义一个POJO,其中包含这些字段。
  2. station是一个数组,它有一个对象,该对象具有idwebsiteIdname等字段。因此,您应该为具有这些字段的站点定义一个POJO。
  3. parameters是一个具有ozonepm25temperaturewind_speedwind_dir字段的对象。因此,您应该定义一个POJO,其中包含这些字段。
  4. ozonepm25有相同的字段,因此它们应该是同一个类的实例。您应该为他们定义一个POJO。

现在让我们看看我们的POJOS: 1)您的第一级POJO:

代码语言:javascript
运行
复制
public class Holder {
    private Station[] station;
    private Parameters parameters;
    private String seasonalParameter;
    private String version;
    private Object[] forecast;
}

2) POJO站:

代码语言:javascript
运行
复制
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; 
}

3)参数字段POJO:

代码语言:javascript
运行
复制
public class Parameters {
    private Param ozone;
    private Param pm25;
    private double temperature;
    private double wind_speed;
    private String wind_dir;
}

4)臭氧和pm25领域的POJO:

代码语言:javascript
运行
复制
public class Param {
    private String value;
    private String unit;
    private String color;
    private String colorHex;
    private String arrow;
}

测试:

代码语言:javascript
运行
复制
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);

注意:您共享的 json示例不是有效的Json。“名称”:、“纬度”:、“经度”:,改为“名称”:"“、”纬度“:"”、“经度”:“使您的json有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26768052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档