java怎么使用gson解析json字符串

Python018

java怎么使用gson解析json字符串,第1张

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

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

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

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

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

{

    "status": 0,

    "result": {

        "location": {

            "lng": 103.98964143811,

            "lat": 30.586643130352

        },

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

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

        "addressComponent": {

            "city": "成都市",

            "district": "双流县",

            "province": "四川省",

            "street": "北一街",

            "street_number": "154"

        },

        "cityCode": 75

    }

}

先普及下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"

        }

    ]

}

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

public class Result {

private Integerstatus

private ResultDetailresult

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 {

Locationlocation

Stringformatted_address

AddressComponentaddressComponent

Stringbusiness

StringcityCode

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 {

Stringlng

Stringlat

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 {

Stringcity

Stringdistrict

Stringprovince

Stringstreet

Stringstreet_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]]

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

步骤3 : 总结.说明

Gson可以很轻松的实现javaBean和jsonString之间的互转.只需要明白json如何定义.剩下的就非常简单了.

学电脑不如学【视频剪辑】,理由很简单,容易学(不像其它行业学习成本高,难度大),适合短期3-4个月短期学习,而且行业缺口非常大,无论是找工作还是自己在家里接私单,月收入轻松过万,两三万也是稀松平常。【点击进入】免费“短视频剪辑后期”学习网址:

www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=313&zdhhr-11y17r-1738408352176795827

因为现在【短视频】的崛起,任何企业,任何工作室或者个人都需要制作剪辑大量的短视频来包装品牌,发抖音,发朋友圈,发淘宝等自媒体渠道做展示。因为每天都要更新并发布新内容,所以剪辑师根本招不够,,供需失衡就造成了剪辑师高薪水。

而且剪辑这个技术并不需要高超的电脑技术,也不需要美术音乐造诣,基本都是固定套路,要什么风格的片要什么节奏,经过三四个月的培训都可以轻松掌握。但凡有点电脑基础会用鼠标拖拽,会点击图标,会保存除非自己不想学,没有学不会的。但是要学好学精,就一定要找专业负责的培训机构了,推荐这个领域的老大:王氏教育。

在“短视频剪辑/短视频运营/视频特效”处理这块,【王氏教育】是国内的老大,每个城市都是总部直营校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合0基础的学生。王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: www.huixueba.com.cn/school/yingshi?type=2&zdhhr-11y17r-1738408352176795827

大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载:www.huixueba.com.cn/Scripts/download.html