如何使用GSON从这个JSON创建Java Object?

时间:2014-11-05 22:06:24

标签: 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"},"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"}

我对物体的尝试:

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;


    }

}

1 个答案:

答案 0 :(得分:1)

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

json structure of ops question

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

  1. 您有station个数组,parameters个对象,seasonalParameter 字符串,version字符串和forecast数组在您的第一级 JSON。所以你应该定义一个包含那些字段的POJO。
  2. station是一个包含一个对象且该对象具有id的数组, websiteIdname等字段。所以你应该定义一个POJO 有这些领域的车站。
  3. parameters是一个包含ozonepm25temperature的对象, wind_speedwind_dir个字段。因此,您应该定义一个包含这些字段的POJO。
  4. ozonepm25具有相同的字段,因此它们应该是同一个类别 实例。你应该为他们定义一个POJO。
  5. 现在让我们看看我们的POJOS: 1)你的第一级POJO:

    public class Holder {
        private Station[] station;
        private Parameters parameters;
        private String seasonalParameter;
        private String version;
        private Object[] forecast;
    }
    

    2)站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; 
    }
    

    3)POJO参数字段:

    public class Parameters {
        private Param ozone;
        private Param pm25;
        private double temperature;
        private double wind_speed;
        private String wind_dir;
    }
    

    4)臭氧和pm25油田的POJO:

    public class Param {
        private String value;
        private String unit;
        private String color;
        private String colorHex;
        private String arrow;
    }
    

    <强>测试

    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。 &#34; name&#34;:,&#34;纬度&#34;:,&#34;经度&#34;:,更改为&#34; name&#34;:&#34;&#34; ,&#34;纬度&#34;:&#34;&#34;,&#34;经度&#34;:&#34;&#34;使你的json有效。

相关问题