Gson的使用

来源:互联网 发布:c语言基础知识要点 编辑:程序博客网 时间:2024/06/07 16:15

下面例子主要包含两个意思,一个将Json字符串转换为对象
另一个将对象转换为字符串.

获取到服务器传递的Json字符串后,在as中安装插件GsonFormat,按快捷键alt+s,把Json字符串粘贴进去,会自动生成bean对象.

package com.example.administrator.weatherforecast;import android.app.Activity;import android.os.Bundle;import android.view.View;import com.example.administrator.weatherforecast.bean.User;import com.example.administrator.weatherforecast.bean.Weather;import com.google.gson.Gson;import java.util.List;public class SecondActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        init();    }    private void init() {        findViewById(R.id.second_btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                parseData();            }        });        findViewById(R.id.second_btn2).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                beanToJson();            }        });    }    /**     * 将bean转换为Json字符串     */    private void beanToJson() {        User zhangsan = new User(13, "zhangsan");        Gson gson = new Gson();        String sGson = gson.toJson(zhangsan);        System.out.println(sGson);        /**         * 06-07 11:07:42.568 20971-20971/com.example.administrator.weatherforecast I/System.out: {"name":"zhangsan","age":13}         */    }    /**     * 解析json数据     */    private void parseData() {        String jsonstring = "{\"coord\":{\"lon\":116.4,\"lat\":39.91},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01d\"}],\"base\":\"stations\",\"main\":{\"temp\":291.15,\"pressure\":1009,\"humidity\":82,\"temp_min\":291.15,\"temp_max\":291.15},\"visibility\":10000,\"wind\":{\"speed\":2,\"deg\":120},\"clouds\":{\"all\":0},\"dt\":1496739600,\"sys\":{\"type\":1,\"id\":7405,\"message\":0.0246,\"country\":\"CN\",\"sunrise\":1496695574,\"sunset\":1496749219},\"id\":1816670,\"name\":\"Beijing\",\"cod\":200}";        /**         * {         * "coord":{"lon":116.4,"lat":39.91},         * "weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}],         * "base":"stations",         * "main":{"temp":291.15,"pressure":1009,"humidity":82,"temp_min":291.15,"temp_max":291.15},         * "visibility":10000,         * "wind":{"speed":2,"deg":120},         * "clouds":{"all":0},         * "dt":1496739600,         * "sys":{"type":1,"id":7405,"message":0.0246,"country":"CN","sunrise":1496695574,"sunset":1496749219},         * "id":1816670,         * "name":"Beijing",         * "cod":200         * }         */        Gson gson = new Gson();        Weather weatherBean = gson.fromJson(jsonstring, Weather.class);        List<Weather.WeatherBean> weather = weatherBean.getWeather();        Weather.WeatherBean weatherBean1 = weather.get(0);        String icon = weatherBean1.getIcon();        System.out.println("icon ="+icon);        /**         * 06-07 10:59:03.124 12918-12918/com.example.administrator.weatherforecast I/System.out: icon =01d         */    }}

用工具生成的bean对象

package com.example.administrator.weatherforecast.bean;import java.util.List;/** * Created by liumeng on 2017/6/7 on 10:52 */public class Weather {    /**     * lon : 116.4     * lat : 39.91     */    private CoordBean coord;    /**     * coord : {"lon":116.4,"lat":39.91}     * weather : [{"id":800,"main":"Clear","description":"clear sky","icon":"01d"}]     * base : stations     * main : {"temp":291.15,"pressure":1009,"humidity":82,"temp_min":291.15,"temp_max":291.15}     * visibility : 10000     * wind : {"speed":2,"deg":120}     * clouds : {"all":0}     * dt : 1496739600     * sys : {"type":1,"id":7405,"message":0.0246,"country":"CN","sunrise":1496695574,"sunset":1496749219}     * id : 1816670     * name : Beijing     * cod : 200     */    private String    base;    /**     * temp : 291.15     * pressure : 1009     * humidity : 82     * temp_min : 291.15     * temp_max : 291.15     */    private MainBean  main;    private int visibility;    /**     * speed : 2     * deg : 120     */    private WindBean   wind;    /**     * all : 0     */    private CloudsBean clouds;    private int dt;    /**     * type : 1     * id : 7405     * message : 0.0246     * country : CN     * sunrise : 1496695574     * sunset : 1496749219     */    private SysBean sys;    private int    id;    private String name;    private int    cod;    /**     * id : 800     * main : Clear     * description : clear sky     * icon : 01d     */    private List<WeatherBean> weather;    public CoordBean getCoord() {        return coord;    }    public void setCoord(CoordBean coord) {        this.coord = coord;    }    public String getBase() {        return base;    }    public void setBase(String base) {        this.base = base;    }    public MainBean getMain() {        return main;    }    public void setMain(MainBean main) {        this.main = main;    }    public int getVisibility() {        return visibility;    }    public void setVisibility(int visibility) {        this.visibility = visibility;    }    public WindBean getWind() {        return wind;    }    public void setWind(WindBean wind) {        this.wind = wind;    }    public CloudsBean getClouds() {        return clouds;    }    public void setClouds(CloudsBean clouds) {        this.clouds = clouds;    }    public int getDt() {        return dt;    }    public void setDt(int dt) {        this.dt = dt;    }    public SysBean getSys() {        return sys;    }    public void setSys(SysBean sys) {        this.sys = sys;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getCod() {        return cod;    }    public void setCod(int cod) {        this.cod = cod;    }    public List<WeatherBean> getWeather() {        return weather;    }    public void setWeather(List<WeatherBean> weather) {        this.weather = weather;    }    public static class CoordBean {        private double lon;        private double lat;        public double getLon() {            return lon;        }        public void setLon(double lon) {            this.lon = lon;        }        public double getLat() {            return lat;        }        public void setLat(double lat) {            this.lat = lat;        }    }    public static class MainBean {        private double temp;        private int    pressure;        private int    humidity;        private double temp_min;        private double temp_max;        public double getTemp() {            return temp;        }        public void setTemp(double temp) {            this.temp = temp;        }        public int getPressure() {            return pressure;        }        public void setPressure(int pressure) {            this.pressure = pressure;        }        public int getHumidity() {            return humidity;        }        public void setHumidity(int humidity) {            this.humidity = humidity;        }        public double getTemp_min() {            return temp_min;        }        public void setTemp_min(double temp_min) {            this.temp_min = temp_min;        }        public double getTemp_max() {            return temp_max;        }        public void setTemp_max(double temp_max) {            this.temp_max = temp_max;        }    }    public static class WindBean {        private int speed;        private int deg;        public int getSpeed() {            return speed;        }        public void setSpeed(int speed) {            this.speed = speed;        }        public int getDeg() {            return deg;        }        public void setDeg(int deg) {            this.deg = deg;        }    }    public static class CloudsBean {        private int all;        public int getAll() {            return all;        }        public void setAll(int all) {            this.all = all;        }    }    public static class SysBean {        private int    type;        private int    id;        private double message;        private String country;        private int    sunrise;        private int    sunset;        public int getType() {            return type;        }        public void setType(int type) {            this.type = type;        }        public int getId() {            return id;        }        public void setId(int id) {            this.id = id;        }        public double getMessage() {            return message;        }        public void setMessage(double message) {            this.message = message;        }        public String getCountry() {            return country;        }        public void setCountry(String country) {            this.country = country;        }        public int getSunrise() {            return sunrise;        }        public void setSunrise(int sunrise) {            this.sunrise = sunrise;        }        public int getSunset() {            return sunset;        }        public void setSunset(int sunset) {            this.sunset = sunset;        }    }    public static class WeatherBean {        private int    id;        private String main;        private String description;        private String icon;        public int getId() {            return id;        }        public void setId(int id) {            this.id = id;        }        public String getMain() {            return main;        }        public void setMain(String main) {            this.main = main;        }        public String getDescription() {            return description;        }        public void setDescription(String description) {            this.description = description;        }        public String getIcon() {            return icon;        }        public void setIcon(String icon) {            this.icon = icon;        }    }}