本文目錄一覽:
Gson 在java 如何使用啊???
google的gson,心想google的應該不會差,帶着一些好奇心,我開始使用了gson。
經過比較,gson和其他現有java json類庫最大的不同時gson需要序列化得實體類不需要使用annotation來標識需要序列化得字段,同時gson又可以通過使用annotation來靈活配置需要序列化的字段。
這裡提供gson-2.2.4.jar的下載(密碼:4Sk4)
下面是一個簡單的例子:
//一個 Person 實體
public class Person {
private String name;
private int age;
//以下是get,set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
實體很簡單,兩個字段,當然實體中的字段也可以是List或者Set類型的。
Gson gson = new Gson();
ListPerson persons = new ArrayListPerson();
for (int i = 0; i 10; i++) {
Person p = new Person();
p.setName(“name” + i);
p.setAge(i * 5);
persons.add(p);
}
String str = gson.toJson(persons);
上面的代碼重點是Gson對象,它提供了toJason()方法將對象轉換成Json字符串,上面代碼的str對象值為:
[
{“name”:”name0″,”age”:0},
{“name”:”name1″,”age”:5},
{“name”:”name2″,”age”:10},
{“name”:”name3″,”age”:15},
{“name”:”name4″,”age”:20},
{“name”:”name5″,”age”:25},
{“name”:”name6″,”age”:30},
{“name”:”name7″,”age”:35},
{“name”:”name8″,”age”:40},
{“name”:”name9″,”age”:45}
]
很標準的json數據,很簡單吧,呵呵。
下面來看看gson的反序列化,Gson提供了fromJson()方法來實現從Json相關對象到java實體的方法。
在日常應用中,我們一般都會碰到兩種情況,轉成單一實體對象和轉換成對象列表或者其他結構。
先來看第一種:
比如json字符串為:[{“name”:”name0″,”age”:0}]
Person person = gson.fromJson(str, Person.class);
提供兩個參數,分別是json字符串以及需要轉換對象的類型。
java怎麼使用gson解析json字符串
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如何定義.剩下的就非常簡單了.
JAVA,為什麼我不能引用gson包?
gson是第三方包,最好的方式是你在你的IDE裏面引入,我不知道你用的是eclipse還是idea,如果是idea,打開你當前項目的project Structure選項,點擊最右側的加號,
然後在你的本地目錄中選擇具體的jar包,
如果你用的是eclipse,也是一樣的,要去設置你的項目依賴jar包,這些網上都可以搜到的。
原創文章,作者:RNXXL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/317172.html