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

40 篇文章 0 订阅
31 篇文章 0 订阅

转自: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 解析 (deserialize) json字符串

工具/原料

  • Gson

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

  1. 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. 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

  1. 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

    + "]";

    }

    }

  2. 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;

    }

    }

  3. 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 + "]";

    }

    }

  4. 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 + "]";

    }

    }

  5. 测试:

    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 );

  6. 结果:

    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. 7

    可见,jsonString已经成功的被转换成了对应的javaBean


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值