最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用GSON解析JSON數(shù)據(jù)

 更新時間:2022年08月30日 10:40:42   作者:冰之沁泠  
這篇文章主要介紹了如何使用GSON解析JSON數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

GSON是谷歌提供的一個開源庫,可以用來解析JSON數(shù)據(jù)

添加依賴

不過GSON并沒有被添加到Android官方的API中,所以如果要使用這個開源庫,我們就要先添加依賴,編輯app/build.gradle文件,

在dependencies閉包中添加如下內(nèi)容:

implementation 'com.google.code.gson:gson:2.7'

JSON數(shù)據(jù)介紹

JSON數(shù)據(jù)分為兩種,對象和數(shù)組,用{ }括起來的是對象,用[ ]括起來的是數(shù)組。

對象:

	{
            "user": "user1",
            "pwd": "123456"
	}

此處是一個JSON對象,里面有兩個字段,分別是user和pwd。

數(shù)組:

[
	{"user": "user1",
	  "pwd": "123456"},
	  
	  {"user": "user2",
	  "pwd": "123456"}
]

此處是一個JSON數(shù)組,數(shù)組里面包含兩個對象,每個對象包含兩個字段。

字段和數(shù)組

{
        "user": "user1",
        "pwd": "123456",
            
        "jsonArray": [
			 {"user": "user1",
	 	      "pwd": "123456"},
	  
	 	     {"user": "user2",
	 		 "pwd": "123456"}
						],
						
			"result": "成功"			
}

此處是一個JSON對象,里面包含了字段和數(shù)組。

在實際情況中,一般都是一個JSON對象里面有數(shù)組和其它字段,或者是很多的嵌套,我們只需要一層一層的去解析就可以了。

GsonFormat

Gson是采用對象映射的方式,所以我們要為JSON數(shù)據(jù)創(chuàng)建一個Java對象來與之對應。

我們可以使用GsonFormat插件,迅速的將JSON數(shù)據(jù)轉(zhuǎn)換成Java對象,使用方法如下:

1、安裝好GsonFormat插件

2、新建一個類,在類里的空白處按Alt+S鍵,并將要轉(zhuǎn)換的JSON數(shù)據(jù)復制進去,界面如下所示:

注意:自動生成的時候,內(nèi)部類可能會是靜態(tài)的,手動把內(nèi)部類的static去掉。

@SerializedName注解

由于JSON中的一些字段可能不太適合直接作為Java字段來命名,因此這里使用了@SerializedName注解的方式來讓JSON字段和Java字段之間建立映射關系。

例:

此處的Test類為JSON數(shù)據(jù)的一個映射類,而USER和PWD為JSON數(shù)據(jù)中的兩個字段,很明顯,這兩個字段的名字不適合做變量名,所以使用@SerializedName注解的方式來讓USER和user建立映射關系,PWD和password建立映射關系。

Gson的使用

解析JSON對象

Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);

此處的User類是JSON數(shù)據(jù)的一個映射類,jsonData是JSON數(shù)據(jù),注意:此處是一個字符串,所有的JSON數(shù)據(jù)都放在這個字符串中,一般為服務器返回的數(shù)據(jù)。

解析JSON數(shù)組

 Gson gson = new Gson();
 List<User> userList = gson.fromJson(jsonData, new TypeToken<User>(){}.getType());

因為是解析JSON數(shù)組,所以我們要用一個List來存放這個數(shù)組,List中的每一個對象就是JSON數(shù)組中的每一個元素。

具體實例

要解析的JSON數(shù)據(jù):

{
        "user": "user1",
        "pwd": "123456",
            
        "jsonArray": [
			 {"user": "user1",
	 	      "pwd": "123456"},
	  
	 	     {"user": "user2",
	 		 "pwd": "123456"}
						],
						
			"result": "成功"			
}

映射的Java類:

public class Data {
    
    private String user;
    private String pwd;
    private String result;
    private List<JsonArrayBean> jsonArray;
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    public List<JsonArrayBean> getJsonArray() {
        return jsonArray;
    }
    public void setJsonArray(List<JsonArrayBean> jsonArray) {
        this.jsonArray = jsonArray;
    }
    public class JsonArrayBean {
        
        private String user;
        private String pwd;
        public String getUser() {
            return user;
        }
        public void setUser(String user) {
            this.user = user;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }
}

解析的方法:

private void parseJSONData(String jsonData) {
        Gson gson = new Gson();
        Data data = gson.fromJson(jsonData, Data.class);
        // data就是整個JSON數(shù)據(jù)映射的一個對象
        String result = data.getResult(); // 取result字段的值
        String pwd = data.getPwd();   // 取pwd字段的值
        String user = data.getUser();  // 取user字段的值
        // 因為jsonArray字段對應的是一個JSON數(shù)組,所以要用一個List來對應
        List<Data.JsonArrayBean> list = data.getJsonArray();
        //取值
        for (int i = 0; i < list.size(); i++) {
            Data.JsonArrayBean jsonArrayBean = list.get(i);
            String user1 = jsonArrayBean.getUser();
            String pwd1 = jsonArrayBean.getPwd();
        }
    }

此處沒有給出網(wǎng)絡通信的代碼,只給出了解析JSON數(shù)據(jù)的代碼。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java多線程的sleep休眠的實現(xiàn)

    Java多線程的sleep休眠的實現(xiàn)

    本文主要介紹了Java多線程的sleep休眠的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Spring事務捕獲異常后依舊回滾的解決

    Spring事務捕獲異常后依舊回滾的解決

    本文主要介紹了Spring事務捕獲異常后依舊回滾的解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java基于直方圖應用的相似圖片識別實例

    Java基于直方圖應用的相似圖片識別實例

    這篇文章主要介紹了Java基于直方圖應用的相似圖片識別實例,是非常實用的技巧,多見于圖形里游戲中,需要的朋友可以參考下
    2014-09-09
  • springboot打包部署到linux服務器的方法

    springboot打包部署到linux服務器的方法

    這篇文章主要介紹了springboot打包部署到linux服務器的方法,通過實例代碼相結(jié)合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 詳解Java中LinkedStack鏈棧的實現(xiàn)

    詳解Java中LinkedStack鏈棧的實現(xiàn)

    這篇文章主要為大家詳細介紹了Java中LinkedStack鏈棧的相關知識,文中的示例代碼講解詳細,對我們學習Java有一定幫助,需要的可以參考一下
    2022-11-11
  • Spring解決依賴版本不一致報錯問題

    Spring解決依賴版本不一致報錯問題

    許多同學經(jīng)常會遇到依賴版本不一致導致代碼報錯,所以這篇文章就給大家詳細介紹一下Spring解決依賴版本不一致報錯問題,需要的朋友跟著小編一起來看看吧
    2023-07-07
  • Java語言實現(xiàn)簡單FTP軟件 FTP軟件主界面(4)

    Java語言實現(xiàn)簡單FTP軟件 FTP軟件主界面(4)

    這篇文章主要為大家詳細介紹了Java語言實現(xiàn)簡單FTP軟件,F(xiàn)TP軟件主界面編寫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Spring?Boot如何實現(xiàn)統(tǒng)一數(shù)據(jù)返回

    Spring?Boot如何實現(xiàn)統(tǒng)一數(shù)據(jù)返回

    這篇文章主要介紹了Spring?Boot如何實現(xiàn)統(tǒng)一數(shù)據(jù)返回,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Java操作Redis2種方法代碼詳解

    Java操作Redis2種方法代碼詳解

    這篇文章主要介紹了Java操作Redis2種方法代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • java多線程之Future和FutureTask使用實例

    java多線程之Future和FutureTask使用實例

    這篇文章主要介紹了java多線程之Future和FutureTask使用實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論

清水县| 嘉峪关市| 三明市| 体育| 蓬安县| 巴彦淖尔市| 竹山县| 新沂市| 平武县| 台北县| 海盐县| 涪陵区| 出国| 稷山县| 湘潭县| 县级市| 抚远县| 朝阳县| 淳安县| 珲春市| 敦化市| 武平县| 呼玛县| 祁连县| 新野县| 娱乐| 安化县| 沭阳县| 昌黎县| 鹤庆县| 漯河市| 观塘区| 扶余县| 昌宁县| 保定市| 汝州市| 纳雍县| 科技| 德惠市| 徐汇区| 宁国市|