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