5分鐘學會用高效的工具解析Json

原創(chuàng)博客,轉載請經(jīng)過本人允許肥矢,你們的點贊和關注是我長期寫作的動力~

準備:

  • json字符串
  • fastjson
  • HiJson格式化json工具

開始教程:

  • fastjson:

    常用工作中解析json的工具類有谷歌的GSON斗埂,jackson符糊,fastjson,這里就不做一一比較了呛凶,博主告訴大家男娄,fastjson就是最高效最好用的,選它就沒錯了漾稀。FastJson出自阿里工程師之手模闲,是一個Json處理工具包,包括“序列化”和“反序列化”兩部分崭捍,它具備如下特征:

    • 速度最快尸折,測試表明,fastjson具有極快的性能殷蛇,超越任其他的Java Json parser实夹。包括自稱最快的JackJson,是GSON解析速度的6倍粒梦;

    • 功能強大亮航,完全支持Java Bean、集合匀们、Map缴淋、日期、Enum泄朴,支持范型重抖,支持自省叼旋;無依賴仇哆,能夠直接運行在Java SE 5.0以上版本;支持Android夫植;開源 (Apache 2.0)

    下載地址:

    fastjson jar包下載地址

  • HiJson:

    HiJson是一個將 json 字符串格式化的工具,非常好用油讯,讓你的json字符串結構一目了然详民,并且可以直接復制鍵值,強烈推薦陌兑!

    HiJson格式化json

    下載地址:

    HiJson下載地址

Fastjson API入口類是com.alibaba.fastjson.JSON沈跨,常用的序列化操作都可以在JSON類上的靜態(tài)方法直接完成。

public static final Object parse(String text); // 把JSON文本parse為JSONObject或者JSONArray 
public static final JSONObject parseObject(String text)兔综; // 把JSON文本parse成JSONObject    
public static final  T parseObject(String text, Class clazz); // 把JSON文本parse為JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 將JavaBean序列化為JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 將JavaBean序列化為帶格式的JSON文本 
public static final Object toJSON(Object javaObject); 將JavaBean轉換為JSONObject或者JSONArray饿凛。

如果你從沒解析過json狞玛,看不太明白沒關系,現(xiàn)在我上面那個json字符串涧窒,手把手的教你怎么解析心肪,學會解析這個較復雜的json串,相信其他的你也肯定也會解析了纠吴。

json串提供給大家拿去練手

{
    "status": "2000",
    "msg": "Successful!",
    "data": [{
        "details": [{
            "distance": 2847,
            "nextLat": 39.994076,
            "nextLong": 116.47764,
            "nexti": "MeloDev",
            "status": 4
        }],
        "distance": 2847,
        "imageUrl": "",
        "overview": "長期原創(chuàng)Android博客",
        "source": "http://www.reibang.com/users/f5909165c1e8/latest_articles",
        "status": "SUCCESSFUL"
    }, {
        "details": [{
            "distance": 2769,
            "nextLat": 39.97691,
            "nextLong": 116.46019,
            "nexti": "MeloDev",
            "status": 4
        }],
        "distance": 2769,
        "imageUrl": "",
        "overview": "喜歡請加關注",
        "source": "http://www.reibang.com/users/f5909165c1e8/latest_articles",
        "status": "SUCCESSFUL"
    }]
}

好的萬事俱備硬鞍,馬上就開始!

把下載的fastjson的兩個jar包導入libs目錄下:

導入fastjson的jar包

現(xiàn)在開始比較關鍵的一步戴已,新建一個bean對象固该,去作為json解析之后的載體,代碼如下:

public class QueryResultInfo {
    public String status;
    public String msg;
    public List<DataList> data;

    public class DataList {
        public int distance;
        public String imageUrl;
        public String overview;
        public String source;
        public String status;
        public List<DetailsList> details;

        @Override
        public String toString() {
            return "DataList [distance=" + distance + ", imageUrl=" + imageUrl + ", overview=" + overview + ", source=" + source + ", status=" + status + ", details=" + details.toString() + "]";
        }

        public class DetailsList {
            public int distance;
            public double nextLat;
            public double nextLong;
            public String nexti;
            public int status;

            @Override
            public String toString() {
                return "DetailsList [distance=" + distance + ", nextLat=" + nextLat + ", nextLong=" + nextLong + ", nexti=" + nexti + ", status=" + status + "]";
            }
        }
    }

    @Override
    public String toString() {
        return "QueryResultInfo [status=" + status + ", msg=" + msg + ", data=" + data.toString() + "]";
    }

}

我來告訴大家糖儡,寫一個解析json之后bean對象的技巧伐坏。首先觀察json格式化的結果(HiJson工具右側視圖),java代碼中:

  • 數(shù)據(jù)的類型握联、鍵的名稱都必須與json字符串保證一一對應
    也就是例子中著淆,每個變量都是以json的鍵名稱命名的,不能寫錯拴疤,而且數(shù)據(jù)類型也必須對應永部,String就是String,int就是int呐矾,float就是float

  • 如果出現(xiàn)嵌套的數(shù)組苔埋,就寫一個內(nèi)部類,用同樣的方式命名各個json字段蜒犯,用List接收它组橄,注意List的命名也得是用json中的鍵名。多層嵌套以此類推罚随。

  • 所有變量的訪問域都是public的玉工。

好了bean對象就完成了。

我把json字符串存在了String.xml下淘菩,點擊按鈕之后遵班,解析json字符串,layout文件很簡單潮改,這里就不放出了狭郑。

MainActivity

可以看到,我們調用JSON.parseObject(myJson,AppInfo.class)這一行代碼汇在,我們就把json字符串的所有信息都解析到了appInfo對象中翰萨,想用什么就直接取出來就可以了。

這個json字符串相對還是復雜的糕殉,多層嵌套亩鬼,所以這個你都會了殖告,簡單的你也肯定沒問題了,當然fastjson的強大不止于此雳锋,如果有特殊需要黄绩,再慢慢發(fā)掘吧~!

喜歡請關注哦魄缚,未來要寫一篇有關線程消息機制Handler的字典型博客宝与,正在深入研究中!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冶匹,一起剝皮案震驚了整個濱河市习劫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嚼隘,老刑警劉巖诽里,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異飞蛹,居然都是意外死亡谤狡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門卧檐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墓懂,“玉大人,你說我怎么就攤上這事霉囚〔蹲校” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵盈罐,是天一觀的道長榜跌。 經(jīng)常有香客問我,道長盅粪,這世上最難降的妖魔是什么钓葫? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮票顾,結果婚禮上础浮,老公的妹妹穿的比我還像新娘。我一直安慰自己库物,他們只是感情好霸旗,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戚揭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撵枢。 梳的紋絲不亂的頭發(fā)上民晒,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天精居,我揣著相機與錄音,去河邊找鬼潜必。 笑死靴姿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的磁滚。 我是一名探鬼主播佛吓,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垂攘!你這毒婦竟也來了维雇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤晒他,失蹤者是張志新(化名)和其女友劉穎吱型,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨仅,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡津滞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灼伤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片触徐。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狐赡,靈堂內(nèi)的尸體忽然破棺而出撞鹉,到底是詐尸還是另有隱情,我是刑警寧澤猾警,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布孔祸,位于F島的核電站,受9級特大地震影響发皿,放射性物質發(fā)生泄漏崔慧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一穴墅、第九天 我趴在偏房一處隱蔽的房頂上張望惶室。 院中可真熱鬧,春花似錦玄货、人聲如沸皇钞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夹界。三九已至,卻和暖如春隘世,著一層夾襖步出監(jiān)牢的瞬間可柿,已是汗流浹背鸠踪。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留复斥,地道東北人营密。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像目锭,于是被迫代替她去往敵國和親评汰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理痢虹,服務發(fā)現(xiàn)被去,斷路器,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,806評論 6 342
  • 1. Java基礎部分 基礎部分的順序:基本語法世分,類相關的語法编振,內(nèi)部類的語法,繼承相關的語法臭埋,異常的語法踪央,線程的語...
    子非魚_t_閱讀 31,624評論 18 399
  • 今天和大家分享的電影是羅卓瑤執(zhí)導的影片誘僧,這部電影改變李碧華的小說“誘僧”瓢阴,整部電影采用仿古的手法再現(xiàn)大唐時期的...
    自在龍閱讀 6,665評論 0 0
  • 喜悅于一起共讀的時光……陸續(xù)將羅文敬先生的筆記和分享載于這畅蹂,以留下永恒的印記。4月23日~5月23日荣恐,我們組隊對抗...
    華南空港宣閱讀 377評論 0 0