日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android学习手册:JSON解析工具比较

發(fā)布時間:2023/12/10 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android学习手册:JSON解析工具比较 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JSON是一種輕量級的數(shù)據(jù)交換格式,具有良好的可讀性和便于快速編寫的特性。可以在不同的平臺間進行數(shù)據(jù)交換。JSON是JavaScript對象表示語法的子集。JSON的值由數(shù)字(整數(shù)或浮點數(shù))、字符串(在雙引號內(nèi))、邏輯值(true或false)、數(shù)組(使用方括號[]包圍)、對象(使用花括號{}包圍)、null等組成,JSON中有且只有兩種結(jié)構(gòu):對象數(shù)組

  • 對象:在JSON數(shù)據(jù)中是{ }括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為{key:value,key:value,…}的鍵值對結(jié)構(gòu)。在面向?qū)ο蟮恼Z言中,key為對象的屬性,value為對應的屬性值,屬性值的類型可以是數(shù)字、字符串、數(shù)組、對象等。
  • 數(shù)組:在JSON中是[ ]擴起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為[“java”,“c”,“c++”,…],使用索引獲取值,字段值的類型可以是數(shù)字、字符串、數(shù)組、對象等。

Android解析JSON數(shù)據(jù)的方法和XML解析類似,主要有兩種: 基于事件驅(qū)動基于文檔驅(qū)動解析方式

  • 基于事件驅(qū)動
    主流方式:Gson解析和Jackson解析
  • 基于文檔驅(qū)動
    主流方式:Android Studio自帶org.json解析
    解析方式:基于文檔驅(qū)動,類似于XML的DOM解析方法,先把全部文件讀入到內(nèi)存中,然后遍歷所有數(shù)據(jù),然后根據(jù)需要檢索想要的數(shù)據(jù)。

一、json-lib

json-lib最開始的也是應用最廣泛的json解析工具,json-lib 不好的地方確實在于依賴于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,對于復雜類型的轉(zhuǎn)換,json-lib對于json轉(zhuǎn)換成bean還有缺陷,比如一個類里面會出現(xiàn)另一個類的list或者map集合,json-lib從json到bean的轉(zhuǎn)換就會出現(xiàn)問題。

json-lib在功能和性能上面都不能滿足現(xiàn)在互聯(lián)網(wǎng)化的需求。


二、Jackson

相比json-lib框架,Jackson所依賴的jar包較少,簡單易用并且性能也要相對高些。而且Jackson社區(qū)相對比較活躍,更新速度也比較快。

Jackson對于復雜類型的json轉(zhuǎn)換bean會出現(xiàn)問題,一些集合Map,List的轉(zhuǎn)換出現(xiàn)問題。

Jackson對于復雜類型的bean轉(zhuǎn)換Json,轉(zhuǎn)換的json格式不是標準的Json格式。

解析原理:
基于事件驅(qū)動,與GSON相同,先創(chuàng)建一個對應于JSON數(shù)據(jù)的JavaBean類就可以通過簡單的操作解析出所需JSON數(shù)據(jù)。但和Gson解析不同的是,GSON可按需解析,即創(chuàng)建的JavaBean類不一定完全涵蓋所要解析的JSON數(shù)據(jù),按需創(chuàng)建屬性,但Jackson解析對應的JavaBean必須把Json數(shù)據(jù)里面的所有key都有所對應,即必須把JSON內(nèi)的數(shù)據(jù)所有解析出來,無法按需解析。但Jackson的解析速度和效率都要比GSON高


三、org.json

org.json為官方提供的JSON數(shù)據(jù)解析方法,解析代碼非常簡單。由于JSON數(shù)據(jù)只有JSON對象和JSON數(shù)組兩種結(jié)構(gòu),因此org.json包提供了JSONObject和JSONArray兩個類對JSON數(shù)據(jù)進行解析。

  • 使用JSONObject來解析JSON對象
  • 使用JSONArray來解析JSON數(shù)組

將服務器返回的JSON數(shù)據(jù)傳入一個JSONObject對象中,然后循環(huán)遍歷這個JSONArray,從中取出的每一個數(shù)據(jù)都是JSONObject對象,接下來調(diào)用getString()方法將JSONObject對象所包含的數(shù)據(jù)取出。


四、GSON(Google)

Gson是目前功能最全的Json解析神器,Gson當初是為因應Google公司內(nèi)部需求而由Google自行研發(fā)而來,但自從在2008年五月公開發(fā)布第一版后已被許多公司或用戶應用。

Gson的應用主要為toJson與fromJson兩個轉(zhuǎn)換函數(shù),無依賴,不需要例外額外的jar,能夠直接跑在JDK上。

而在使用這種對象轉(zhuǎn)換之前,需先創(chuàng)建好對象的類型以及其成員,才能成功的將JSON字符串成功轉(zhuǎn)換成相對應的對象。

類里面只要有get和set方法,Gson完全可以將復雜類型的json到bean或bean到json的轉(zhuǎn)換,是JSON解析的神器。

Gson在功能上面無可挑剔,但是性能上面比FastJson有所差距。

GSON特點:

  • 快速、高效
  • 代碼量少、簡潔
  • 面向?qū)ο?/li>
  • 數(shù)據(jù)傳遞和解析方便

GSON解析的關鍵是重點是要根據(jù)json數(shù)據(jù)里面的結(jié)構(gòu)寫出一個對應的javaBean,規(guī)則是:

  • JSON的大括號對應一個對象,對象里面有key和value(值)。在JavaBean里面的類屬性要和key同名
  • JSON的方括號對應一個數(shù)組,所以在JavaBeanBean里面對應的也是數(shù)組,數(shù)據(jù)里面可以有值或者對象。
  • 如果數(shù)組里面只有值沒有key,就說明它只是一個純數(shù)組,如果里面有值有key,則說明是對象數(shù)組。純數(shù)組對應JavaBean里面的數(shù)組類型,對象數(shù)組要在Bean里面建立一個內(nèi)部類,類屬性就是對應的對象里面的key,建立了之后要創(chuàng)建一個這個內(nèi)部類的對象,名字對應數(shù)組名。
  • 對象里面嵌套對象時候,也要建立一個內(nèi)部類,和對象數(shù)組一樣,這個內(nèi)部類對象的名字就是父對象的key。

注:JavaBean類里的屬性不一定要全部和JSON數(shù)據(jù)里的所有key相同,可以按需取數(shù)據(jù),也就是你想要哪種數(shù)據(jù),就把對應的key屬性寫出來,注意名字一定要對應


五、FastJson(阿里巴巴)

Fastjson是一個Java語言編寫的高性能的JSON處理器,由阿里巴巴公司開發(fā)。

無依賴,不需要例外額外的jar,能夠直接跑在JDK上。

FastJson在復雜類型的Bean轉(zhuǎn)換Json上會出現(xiàn)一些問題,可能會出現(xiàn)引用的類型,導致Json轉(zhuǎn)換出錯,需要制定引用。

FastJson采用獨創(chuàng)的算法,將parse的速度提升到極致,超過所有json庫。

FastJson特點:

  • 快速FAST(比其它任何基于Java的解析器和生成器更快,包括jackson)
  • 強大(支持普通JDK類包括任意JavaBean Class、Collection、Map、Date或enum)
  • 零依賴(沒有依賴其他任何類庫除了JDK)
  • 支持注解、支持全類型序列化

六、總結(jié)

綜上5種Json技術的比較,在項目選型的時候可以使用Google的Gson和阿里巴巴的FastJson兩種并行使用,如果只是功能要求,沒有性能要求,可以使用google的Gson,如果有性能上面的要求可以使用Gson將bean轉(zhuǎn)換json確保數(shù)據(jù)的正確,使用FastJson將Json轉(zhuǎn)換Bean。


總結(jié)

以上是生活随笔為你收集整理的Android学习手册:JSON解析工具比较的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。