Java 進(jìn)階 & FastJson 的使用

需要包:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.43</version>
</dependency>
1、 Json字符串轉(zhuǎn) map 對(duì)象
String jsonString1 = "{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"}";
System.out.println(jsonString1);
Map<String,String> stringStringMap = (Map<String,String>) JSON.parse(jsonString1);
for (String s : stringStringMap.keySet()) {
    System.out.println(s + "==>" +stringStringMap.get(s));
}

輸出:

{"param5":"value5","param3":"value3","param4":"value4","param1":"value1","param2":"value2"}
param5==>value5
param3==>value3
param4==>value4
param1==>value1
param2==>value2
2、Json字符串轉(zhuǎn) List 集合
String jsonString2 = "[{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"},{\"p1\":\"v1\",\"p2\":\"v2\",\"p3\":\"v3\",\"p4\":\"v4\",\"p5\":\"v5\"}]";
System.out.println(jsonString2);
List<Map<String,String>> mapList = JSON.parseObject(jsonString2, new TypeReference<List<Map<String,String>>>(){});
for (Map<String, String> stringObjectMap : mapList) {
    for (String s : stringObjectMap.keySet()) {
        System.out.println(s + "==>" + stringObjectMap.get(s));
    }
}

輸出:

[{"param5":"value5","param3":"value3","param4":"value4","param1":"value1","param2":"value2"},{"p1":"v1","p2":"v2","p3":"v3","p4":"v4","p5":"v5"}]
param5==>value5
param3==>value3
param4==>value4
param1==>value1
param2==>value2
p1==>v1
p2==>v2
p3==>v3
p4==>v4
p5==>v5
3、復(fù)雜JSON字符串 轉(zhuǎn) List集合
String jsonString3 = "{\"count\":2,\"list\":[{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"},{\"p1\":\"v1\",\"p2\":\"v2\",\"p3\":\"v3\",\"p4\":\"v4\",\"p5\":\"v5\"}]}";
System.out.println(jsonString3);
Map<String,Object> map = JSON.parseObject(jsonString3);
System.out.println(map.get("count"));
String tempjsonString3 = map.get("list").toString();
System.out.println(tempjsonString3);
List<Map<String,String>> mapList2 = JSON.parseObject(tempjsonString3, new TypeReference<List<Map<String,String>>>(){});
for (Map<String, String> stringObjectMap : mapList2) {
    for (String s : stringObjectMap.keySet()) {
        System.out.println(s + "==>" + stringObjectMap.get(s));
    }
}

輸出:

{"count":2,"list":[{"param5":"value5","param3":"value3","param4":"value4","param1":"value1","param2":"value2"},{"p1":"v1","p2":"v2","p3":"v3","p4":"v4","p5":"v5"}]}
2
[{"param5":"value5","param3":"value3","param4":"value4","param1":"value1","param2":"value2"},{"p1":"v1","p2":"v2","p3":"v3","p4":"v4","p5":"v5"}]
param5==>value5
param3==>value3
param4==>value4
param1==>value1
param2==>value2
p1==>v1
p2==>v2
p3==>v3
p4==>v4
p5==>v5
4攀隔、解析JSON字符串到指定對(duì)象class

第一種方式,使用parseArray

String jsonString4 = "[{\"age\":12,\"date\":1465475917155,\"name\":\"s1\"},{\"age\":12,\"date\":1465475917175,\"name\":\"s2\"},{\"age\":12,\"date\":1465475917175,\"name\":\"s3\"},{\"age\":12,\"date\":1465475917175,\"name\":\"s4\"},{\"age\":12,\"date\":1465475917175,\"name\":\"s5\"},{\"age\":12,\"date\":1465475917175,\"name\":\"s6\"}]";
System.out.println(jsonString4);
List<Student> studentList = JSON.parseArray(jsonString4,Student.class);
for (Student student : studentList) {
    System.out.println(student);
}

第二種方式栖榨,使用parseObject

System.out.println(jsonString4);
List<Student> studentList2 = JSON.parseObject(jsonString4,new TypeReference<List<Student>>(){});
for (Student student : studentList2) {
    System.out.println(student);
}

輸出:

[{"age":12,"date":1465475917155,"name":"s1"},{"age":12,"date":1465475917175,"name":"s2"},{"age":12,"date":1465475917175,"name":"s3"},{"age":12,"date":1465475917175,"name":"s4"},{"age":12,"date":1465475917175,"name":"s5"},{"age":12,"date":1465475917175,"name":"s6"}]
Student{name='s1', age=12, date=Thu Jun 09 20:38:37 CST 2016}
Student{name='s2', age=12, date=Thu Jun 09 20:38:37 CST 2016}
Student{name='s3', age=12, date=Thu Jun 09 20:38:37 CST 2016}
Student{name='s4', age=12, date=Thu Jun 09 20:38:37 CST 2016}
Student{name='s5', age=12, date=Thu Jun 09 20:38:37 CST 2016}
Student{name='s6', age=12, date=Thu Jun 09 20:38:37 CST 2016}
5、 Map對(duì)象轉(zhuǎn)化成json字符串
Map<String, Object> maps = new HashMap<String,Object>();
maps.put("grant_code","XF9JKY0R");
maps.put("is_car_config",0);
maps.put("isCN",1);
maps.put("vinCode","LGBG22E22AY081092");
String jsonParam = JSON.toJSONString(maps);
System.out.println(jsonParam);

輸出:

{"grant_code":"XF9JKY0R","is_car_config":0,"vinCode":"LGBG22E22AY081092","isCN":1}
6明刷、綜合運(yùn)用
package com.sc.fastjson;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FastJsonDemo {
    public static void main(String[] args) {
//        ObjectToJson();
        JsonToString();
    }

    public static void  ObjectToJson(){
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("id","123");
        map.put("name","張三");
        map.put("sex","男");
        map.put("age","15");
        /**
         * 1婴栽、先將map 進(jìn)行json格式化,JSON.toJSONString(map) 返回json字符串
         * 2辈末、然后將json字符串轉(zhuǎn)換成對(duì)象
         */
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(map));
        String age = jsonObject.get("age").toString();
        System.out.println(age);//15


        List<String> list = new ArrayList<String>();
        list.add("{a,b,c}");
        list.add("{a1,b1,c1}");
        list.add("{a2,b2,c2}");
        list.add("{a3,b3,c3}");
        JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(list));
        System.out.println(jsonArray.get(2));//{a2,b2,c2}


        map.put("list",list);
        JSONObject jsonObject1 = JSON.parseObject(JSON.toJSONString(map));
        JSONArray jsonArray1 = jsonObject1.getJSONArray("list");
        System.out.println(jsonArray1.get(3));//{a3,b3,c3}

    }


    public static void JsonToString(){
        String jsonStr1 = "{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"}";
        Object object = JSON.parse(jsonStr1);
        System.out.println(object.toString());

        Map<String,Object> map = (Map<String, Object>) JSON.parse(jsonStr1);
        System.out.println(map.get("param4").toString());
        System.out.println("---------第一種寫(xiě)法----------");
        //復(fù)雜json轉(zhuǎn)換成List
        //第一種寫(xiě)法
        String jsonStr2 = "{\"count\":2,\"list\":[{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"},{\"p1\":\"v1\",\"p2\":\"v2\",\"p3\":\"v3\",\"p4\":\"v4\",\"p5\":\"v5\"}]}";
        JSONObject jsonObject = (JSONObject) JSON.parse(jsonStr2);
        JSONArray array = (JSONArray) jsonObject.get("list");
        for (Object o : array){
            System.out.println(o.toString());
        }
        System.out.println("---------第二種寫(xiě)法----------");
        //第二種寫(xiě)法
        String jsonStr3 = "{\"count\":2,\"list\":[{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"},{\"p1\":\"v1\",\"p2\":\"v2\",\"p3\":\"v3\",\"p4\":\"v4\",\"p5\":\"v5\"}]}";
        Map<String,Object> map2 = (Map<String, Object>) JSON.parse(jsonStr3);
        List<Object> list2 = (List<Object>) map2.get("list");
        for(Object o:list2){
            System.out.println(o.toString());
        }
        System.out.println("---------第三種寫(xiě)法-------------");
        //第三種寫(xiě)法
        String jsonStr4 = "{\"count\":2,\"list\":[{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"},{\"p1\":\"v1\",\"p2\":\"v2\",\"p3\":\"v3\",\"p4\":\"v4\",\"p5\":\"v5\"}]}";
        Map<String,Object> map4 = JSON.parseObject(jsonStr4,new TypeReference<Map<String,Object>>(){});
        String jsonList = map4.get("list").toString();
        List<Object> list4 =JSON.parseObject(jsonList,new TypeReference<List<Object>>(){});
        for(Object o : list4){
            System.out.println(o.toString());
        }
        System.out.println("---------第四種寫(xiě)法-------------");
        String jsonStr5 = "{\"count\":2,\"list\":[{\"param5\":\"value5\",\"param3\":\"value3\",\"param4\":\"value4\",\"param1\":\"value1\",\"param2\":\"value2\"},{\"p1\":\"v1\",\"p2\":\"v2\",\"p3\":\"v3\",\"p4\":\"v4\",\"p5\":\"v5\"}]}";
        JSONObject jsonEntry = JSON.parseObject(jsonStr5);
        for(Map.Entry<String,Object> entry:jsonEntry.entrySet()){
            if(entry.getKey().equals("list")){
                JSONArray  jsonArray = JSON.parseArray(entry.getValue().toString());
                for(Object o: jsonArray){
                    System.out.println(o.toString());
                }
            }
        }
 
    }
}

以上輸出結(jié)果為:
{"param5":"value5","param3":"value3","param4":"value4","param1":"value1","param2":"value2"}
{"p1":"v1","p2":"v2","p3":"v3","p4":"v4","p5":"v5"}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愚争,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子挤聘,更是在濱河造成了極大的恐慌轰枝,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件组去,死亡現(xiàn)場(chǎng)離奇詭異鞍陨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)从隆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)诚撵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人键闺,你說(shuō)我怎么就攤上這事寿烟。” “怎么了辛燥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵筛武,是天一觀的道長(zhǎng)缝其。 經(jīng)常有香客問(wèn)我,道長(zhǎng)徘六,這世上最難降的妖魔是什么内边? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮硕噩,結(jié)果婚禮上假残,老公的妹妹穿的比我還像新娘。我一直安慰自己炉擅,他們只是感情好辉懒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著谍失,像睡著了一般眶俩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上快鱼,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天颠印,我揣著相機(jī)與錄音,去河邊找鬼抹竹。 笑死线罕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窃判。 我是一名探鬼主播钞楼,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼袄琳!你這毒婦竟也來(lái)了询件?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤唆樊,失蹤者是張志新(化名)和其女友劉穎宛琅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逗旁,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘿辟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了片效。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仓洼。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖堤舒,靈堂內(nèi)的尸體忽然破棺而出色建,到底是詐尸還是另有隱情,我是刑警寧澤舌缤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布箕戳,位于F島的核電站某残,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏陵吸。R本人自食惡果不足惜玻墅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壮虫。 院中可真熱鬧澳厢,春花似錦、人聲如沸囚似。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)饶唤。三九已至徐伐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間募狂,已是汗流浹背办素。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祸穷,地道東北人性穿。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像雷滚,于是被迫代替她去往敵國(guó)和親需曾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理揭措,服務(wù)發(fā)現(xiàn),斷路器刻蚯,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • //Clojure入門(mén)教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語(yǔ)閱讀 3,665評(píng)論 0 7
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法绊含,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法炊汹,繼承相關(guān)的語(yǔ)法躬充,異常的語(yǔ)法,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,631評(píng)論 18 399
  • 今天是第12天讨便,也是從童年記憶到改變實(shí)操的第二天充甚,改變很難,在讓你的想法霸褒、感受和行為煥然一新的路上有12只攔路虎伴找,...
    李燕l(xiāng)iy閱讀 296評(píng)論 0 0
  • 現(xiàn)在回想起來(lái),這一切都像是一場(chǎng)夢(mèng)废菱。 那個(gè)時(shí)候他正年少技矮,敢想敢拼抖誉,為了理想四處奔波。他那么努力衰倦,可是理想就像一只鳥(niǎo)袒炉,...
    ocean1874閱讀 247評(píng)論 0 0