您的位置:首页 > Web前端 > JavaScript

怎样使用Gson 解析 (deserialize) json字符串

2014-07-23 16:11 423 查看
转自:http://jingyan.baidu.com/article/17bd8e521f1cf385ab2bb819.html



Gson是谷歌推出的解析json数据以及将对象转换成json数据的一个开源框架. 现在json因其易读性和高效率而被广泛的使用着.

相对于java以及其它json的解析框架,Gson非常的好用.

简单来讲就是根据json的数据结构定义出相应的javabean --->"new"出Gson的实例gson---->gson.fromJson(jsonString,JavaBean.class) 即可.

下面给出一个实例来说明.




工具/原料

Gson


步骤1:目标:将从webservice传回的json

1

{

"status": 0,

"result": {

"location": {

"lng": 103.98964143811,

"lat": 30.586643130352

},

"formatted_address": "四川省成都市双流县北一街154",

"business": "簇桥,金花桥",

"addressComponent": {

"city": "成都市",

"district": "双流县",

"province": "四川省",

"street": "北一街",

"street_number": "154"

},

"cityCode": 75

}

}

2

先普及下json数据格式定义: json数据只有两种格式.

一种是对象: 一个大括号包裹的内容就是一个对象.里面是无数个逗号相间隔的键值对

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

一种是数组:一个方括号包裹的内容就是一个数组,里面是无数个逗号相间隔的json对象

如:

{

"people": [

{

"firstName": "Brett",

"lastName": "McLaughlin",

"email": "aaaa"

},

{

"firstName": "Jason",

"lastName": "Hunter",

"email": "bbbb"

},

{

"firstName": "Elliotte",

"lastName": "Harold",

"email": "cccc"

}

]

}

END


步骤2 定义json数据格式对应的javaBean

public class Result {

private Integer status;

private ResultDetail result;

public Result() {

}

public Result(Integer status, ResultDetail result) {

super();

this.status = status;

this.result = result;

}

public ResultDetail getResult() {

return this.result;

}

public Integer getStatus() {

return this.status;

}

public void setResult( ResultDetail result ) {

this.result = result;

}

public void setStatus( Integer status ) {

this.status = status;

}

@Override

public String toString() {

return "Result [status=" + this.status + ", result=" + this.result

+ "]";

}

}

public class ResultDetail {

Location location;

String formatted_address;

AddressComponent addressComponent;

String business;

String cityCode;

public ResultDetail() {

super();

// TODO Auto-generated constructor stub

}

public ResultDetail(Location location, String formatted_address,

AddressComponent addressComponent, String business, String cityCode) {

super();

this.location = location;

this.formatted_address = formatted_address;

this.addressComponent = addressComponent;

this.business = business;

this.cityCode = cityCode;

}

public AddressComponent getAddressComponent() {

return this.addressComponent;

}

public String getBusiness() {

return this.business;

}

public String getCityCode() {

return this.cityCode;

}

public String getFormatted_address() {

return this.formatted_address;

}

public Location getLocation() {

return this.location;

}

public void setAddressComponent( AddressComponent addressComponent ) {

this.addressComponent = addressComponent;

}

public void setBusiness( String business ) {

this.business = business;

}

public void setCityCode( String cityCode ) {

this.cityCode = cityCode;

}

public void setFormatted_address( String formatted_address ) {

this.formatted_address = formatted_address;

}

public void setLocation( Location location ) {

this.location = location;

}

}

public class Location {

String lng;

String lat;

public Location() {

}

public Location(String lng, String lat) {

this.lng = lng;

this.lat = lat;

}

public String getLat() {

return this.lat;

}

public String getLng() {

return this.lng;

}

public void setLat( String lat ) {

this.lat = lat;

}

public void setLng( String lng ) {

this.lng = lng;

}

@Override

public String toString() {

return "Location [lng=" + this.lng + ", lat=" + this.lat + "]";

}

}

public class AddressComponent {

String city;

String district;

String province;

String street;

String street_number;

public AddressComponent() {

super();

// TODO Auto-generated constructor stub

}

public AddressComponent(String city, String district, String province,

String street, String street_number) {

super();

this.city = city;

this.district = district;

this.province = province;

this.street = street;

this.street_number = street_number;

}

public String getCity() {

return this.city;

}

public String getDistrict() {

return this.district;

}

public String getProvince() {

return this.province;

}

public String getStreet() {

return this.street;

}

public String getStreet_number() {

return this.street_number;

}

public void setCity( String city ) {

this.city = city;

}

public void setDistrict( String district ) {

this.district = district;

}

public void setProvince( String province ) {

this.province = province;

}

public void setStreet( String street ) {

this.street = street;

}

public void setStreet_number( String street_number ) {

this.street_number = street_number;

}

@Override

public String toString() {

return "AddressComponent [city=" + this.city + ", district="

+ this.district + ", province=" + this.province + ", street="

+ this.street + ", street_number=" + this.street_number + "]";

}

}

测试:

jsonString ( 目标json数据,已经在最上面写好的)

System.out.println( "jsonString:" + jsonString );

Gson gson = new Gson();

Result fromJson = gson.fromJson( jsonString.toString() ,

Result.class );

System.out.println( "******************************************" );

System.out.println( fromJson );

结果:

jsonString:{"status":0,"result":{"location":{"lng":103.98964143811,"lat":30.586643130352},"formatted_address":"四川省成都市双流县北一街154","business":"簇桥,金花桥","addressComponent":{"city":"成都市","district":"双流县","province":"四川省","street":"北一街","street_number":"154"},"cityCode":75}}

*******************************************

Result [status=0, result=ResultDetail [location=Location [lng=103.98964143811, lat=30.586643130352], formatted_address=四川省成都市双流县北一街154, addressComponent=AddressComponent [city=成都市, district=双流县, province=四川省, street=北一街, street_number=154], business=簇桥,金花桥,
cityCode=75]]

7

可见,jsonString已经成功的被转换成了对应的javaBean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐