javagson,javagson解析json字符串為map

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RNXXL的頭像RNXXL
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相關推薦

  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分佈式文件系統(HDFS)。HDFS是一個可擴展性高的分佈式…

    編程 2025-04-29
  • Python如何將字符串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字符串的處理提供了很多便捷的方式。如何將字符串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字符…

    編程 2025-04-29
  • Python int轉二進制字符串

    本文將從以下幾個方面對Python中將int類型轉換為二進制字符串進行詳細闡述: 一、int類型和二進制字符串的定義 在Python中,int類型表示整數,二進制字符串則是由0和1…

    編程 2025-04-29
  • 用title和capitalize美觀處理Python字符串

    在Python中,字符串是最常用的數據類型之一。對字符串的美觀處理是我們在實際開發中經常需要的任務之一。Python內置了一些方法,如title和capitalize,可以幫助我們…

    編程 2025-04-28
  • Python 提取字符串中的電話號碼

    Python 是一種高級的、面向對象的編程語言,它具有簡單易學、開發迅速、代碼簡潔等特點,廣泛應用於 Web 開發、數據科學、人工智能等領域。在 Python 中,提取字符串中的電…

    編程 2025-04-28

發表回復

登錄後才能評論