下面例子主要包含两个意思,一个将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;
}
}
}