json 解析之Gson (1)

12 篇文章 0 订阅
2 篇文章 0 订阅

json解析是领导给你分配下来的任务,在这个任务中需求是大的json数据的快速解析以及在解析过程中出现问题的解决,在这里记录一下学习的过程.

Gson是Google的一个项目,在网上看到对Gson的评价挺高的,Gson的作用是,可以将Java类转换成json数据,将json 数据转成Java类中,这也是解析json的框架都提供的.

为了拿到比较大的数据,我在心智天气那里拿到了天气预报的接口,他返回的数据挺大的,

 https://api.thinkpage.cn/v2/weather/all.json?city=北京&language=zh-chs&unit=c&aqi=city&key=密钥
可以在这里拿到数据,我感觉还不错,首先我们需要建立一个域类,用来接收json数据,所以首先看清楚json数据的结构,可以使用json试图,看清楚json的数据

JSONBean类:

package com.kingnet.parseJSON.domain;

import java.util.List;

/**
 * Created by xuss on 2015/3/20.
 */
public class JSONBean {
    public String status;
    public List<Weather> weather;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<Weather> getWeather() {
        return weather;
    }

    public void setWeather(List<Weather> weather) {
        this.weather = weather;
    }

    public static class Weather {
        public String city_name;
        public String city_id;
        public String last_update;
        public Today today;
        public Now now;
        public List<Future> future;

        public String getCity_name() {
            return city_name;
        }

        public void setCity_name(String city_name) {
            this.city_name = city_name;
        }

        public String getLast_update() {
            return last_update;
        }

        public void setLast_update(String last_update) {
            this.last_update = last_update;
        }

        public String getCity_id() {
            return city_id;
        }

        public void setCity_id(String city_id) {
            this.city_id = city_id;
        }

        public Today getToday() {
            return today;
        }

        public void setToday(Today today) {
            this.today = today;
        }

        public List<Future> getFuture() {
            return future;
        }

        public void setFuture(List<Future> future) {
            this.future = future;
        }

        public Now getNow() {
            return now;
        }

        public void setNow(Now now) {
            this.now = now;
        }

        public static class Now {
            public String text;
            public String code;
            public String temperature;
            public String feels_like;
            public String wind_direction;
            public String wind_speed;
            public String wind_scale;
            public String humidity;
            public String visibility;
            public String pressure;
            public String pressure_rising;
            public Air_quality air_quality;

            public String getText() {
                return text;
            }

            public void setText(String text) {
                this.text = text;
            }

            public String getPressure_rising() {
                return pressure_rising;
            }

            public void setPressure_rising(String pressure_rising) {
                this.pressure_rising = pressure_rising;
            }

            public Air_quality getAir_quality() {
                return air_quality;
            }

            public void setAir_quality(Air_quality air_quality) {
                this.air_quality = air_quality;
            }

            public String getPressure() {
                return pressure;
            }

            public void setPressure(String pressure) {
                this.pressure = pressure;
            }

            public String getHumidity() {
                return humidity;
            }

            public void setHumidity(String humidity) {
                this.humidity = humidity;
            }

            public String getVisibility() {
                return visibility;
            }

            public void setVisibility(String visibility) {
                this.visibility = visibility;
            }

            public String getWind_scale() {
                return wind_scale;
            }

            public void setWind_scale(String wind_scale) {
                this.wind_scale = wind_scale;
            }

            public String getWind_speed() {
                return wind_speed;
            }

            public void setWind_speed(String wind_speed) {
                this.wind_speed = wind_speed;
            }

            public String getWind_direction() {
                return wind_direction;
            }

            public void setWind_direction(String wind_direction) {
                this.wind_direction = wind_direction;
            }

            public String getFeels_like() {
                return feels_like;
            }

            public void setFeels_like(String feels_like) {
                this.feels_like = feels_like;
            }

            public String getTemperature() {
                return temperature;
            }

            public void setTemperature(String temperature) {
                this.temperature = temperature;
            }

            public String getCode() {
                return code;
            }

            public void setCode(String code) {
                this.code = code;
            }

            public static class Air_quality {

                public String stations;
                public City city;

                public String getStations() {
                    return stations;
                }

                public void setStations(String stations) {
                    this.stations = stations;
                }

                public City getCity() {
                    return city;
                }

                public void setCity(City city) {
                    this.city = city;
                }

                public static class City {
                    public String aqi;
                    public String pm25;
                    public String pm10;
                    public String so2;
                    public String no2;
                    public String co;
                    public String o3;
                    public String quality;
                    public String last_update;

                    public String getAqi() {
                        return aqi;
                    }

                    public void setAqi(String aqi) {
                        this.aqi = aqi;
                    }

                    public String getLast_update() {
                        return last_update;
                    }

                    public void setLast_update(String last_update) {
                        this.last_update = last_update;
                    }

                    public String getO3() {
                        return o3;
                    }

                    public void setO3(String o3) {
                        this.o3 = o3;
                    }

                    public String getQuality() {
                        return quality;
                    }

                    public void setQuality(String quality) {
                        this.quality = quality;
                    }

                    public String getNo2() {
                        return no2;
                    }

                    public void setNo2(String no2) {
                        this.no2 = no2;
                    }

                    public String getCo() {
                        return co;
                    }

                    public void setCo(String co) {
                        this.co = co;
                    }

                    public String getSo2() {
                        return so2;
                    }

                    public void setSo2(String so2) {
                        this.so2 = so2;
                    }

                    public String getPm10() {
                        return pm10;
                    }

                    public void setPm10(String pm10) {
                        this.pm10 = pm10;
                    }

                    public String getPm25() {
                        return pm25;
                    }

                    public void setPm25(String pm25) {
                        this.pm25 = pm25;
                    }
                }
            }

        }

        public static class Today {

            public String sunrise;
            public String sunset;
            public Suggestion suggestion;

            public String getSunrise() {
                return sunrise;
            }

            public void setSunrise(String sunrise) {
                this.sunrise = sunrise;
            }

            public Suggestion getSuggestion() {
                return suggestion;
            }

            public void setSuggestion(Suggestion suggestion) {
                this.suggestion = suggestion;
            }

            public String getSunset() {
                return sunset;
            }

            public void setSunset(String sunset) {
                this.sunset = sunset;
            }

            public static class Suggestion {
                public Dressing dressing;
                public Uv uv;
                public Car_washing car_washing;
                public Travel travel;
                public Flu flu;
                public Sport sport;

                public Dressing getDressing() {
                    return dressing;
                }

                public void setDressing(Dressing dressing) {
                    this.dressing = dressing;
                }

                public Sport getSport() {
                    return sport;
                }

                public void setSport(Sport sport) {
                    this.sport = sport;
                }

                public Car_washing getCar_washing() {
                    return car_washing;
                }

                public void setCar_washing(Car_washing car_washing) {
                    this.car_washing = car_washing;
                }

                public Travel getTravel() {
                    return travel;
                }

                public void setTravel(Travel travel) {
                    this.travel = travel;
                }

                public Flu getFlu() {
                    return flu;
                }

                public void setFlu(Flu flu) {
                    this.flu = flu;
                }

                public Uv getUv() {
                    return uv;
                }

                public void setUv(Uv uv) {
                    this.uv = uv;
                }

                public static class Dressing {
                    public String brief;
                    public String details;

                    public String getBrief() {
                        return brief;
                    }

                    public void setBrief(String brief) {
                        this.brief = brief;
                    }

                    public String getDetails() {
                        return details;
                    }

                    public void setDetails(String details) {
                        this.details = details;
                    }
                }

                public static class Uv {
                    public String brief;
                    public String details;

                    public String getBrief() {
                        return brief;
                    }

                    public void setBrief(String brief) {
                        this.brief = brief;
                    }

                    public String getDetails() {
                        return details;
                    }

                    public void setDetails(String details) {
                        this.details = details;
                    }
                }

                public static class Car_washing {
                    public String brief;
                    public String details;

                    public String getBrief() {
                        return brief;
                    }

                    public void setBrief(String brief) {
                        this.brief = brief;
                    }

                    public String getDetails() {
                        return details;
                    }

                    public void setDetails(String details) {
                        this.details = details;
                    }
                }

                public static class Travel {
                    public String brief;
                    public String details;

                    public String getBrief() {
                        return brief;
                    }

                    public void setBrief(String brief) {
                        this.brief = brief;
                    }

                    public String getDetails() {
                        return details;
                    }

                    public void setDetails(String details) {
                        this.details = details;
                    }
                }

                public static class Flu {
                    public String brief;
                    public String details;

                    public String getBrief() {
                        return brief;
                    }

                    public void setBrief(String brief) {
                        this.brief = brief;
                    }

                    public String getDetails() {
                        return details;
                    }

                    public void setDetails(String details) {
                        this.details = details;
                    }
                }

                public static class Sport {
                    public String brief;
                    public String details;

                    public String getBrief() {
                        return brief;
                    }

                    public void setBrief(String brief) {
                        this.brief = brief;
                    }

                    public String getDetails() {
                        return details;
                    }

                    public void setDetails(String details) {
                        this.details = details;
                    }
                }
            }

        }

        public static class Future {
            public String date;
            public String day ;
            public String text;
            public String code1;
            public String code2;
            public String high;
            public String low;
            public String cop;
            public String wind;

            public String getDate() {
                return date;
            }

            public void setDate(String date) {
                this.date = date;
            }

            public String getWind() {
                return wind;
            }

            public void setWind(String wind) {
                this.wind = wind;
            }

            public String getCop() {
                return cop;
            }

            public void setCop(String cop) {
                this.cop = cop;
            }

            public String getLow() {
                return low;
            }

            public void setLow(String low) {
                this.low = low;
            }

            public String getHigh() {
                return high;
            }

            public void setHigh(String high) {
                this.high = high;
            }

            public String getCode2() {
                return code2;
            }

            public void setCode2(String code2) {
                this.code2 = code2;
            }

            public String getCode1() {
                return code1;
            }

            public void setCode1(String code1) {
                this.code1 = code1;
            }

            public String getText() {
                return text;
            }

            public void setText(String text) {
                this.text = text;
            }

            public String getDay() {
                return day;
            }

            public void setDay(String day) {
                this.day = day;
            }
        }

    }
}
这个域类很长,因为数据类型很多,下面使用Http请求数据源,拿到相应的数据,并且在本地进行解析,使用Gson很简单,

            Gson gson = new Gson();
            JSONBean jsonBean = gson.fromJson(json, JSONBean.class);

            Log.e("json", jsonBean.getStatus() + " " + " this is json   ");
在写的过程中,最难的就是细心,将json数据的匹配功能,这里引用一下 tkwxty的代码

String json = {"a"
    :"10","b":[

    {
        "b1":"b_value1", "b2":"b_value2"
    }

    ,

    {
        "b1":"b_value1", "b2":"b_value2"
    }

    ],"c":

    {
        "c1":"c_value1", "c2":"c_value2"
    }
}

这样结构的json数据,我们可以这样进行数据的处理:

public class JsonBean {
                         public String a;
                         public List<B> b;
                         public C c;

                         public static class B {

                                      public String b1;

                                  public String b2;
                        }
    
                        public static class C {
                                 public String c1;
                                 public String c2;
                       }
              }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值