阿里Fastjson的使用

Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。由阿里巴巴公司團隊開發的.html

主要特性主要體如今如下幾個方面:java

1.高性能git

fastjson採用首創的算法,將parse的速度提高到極致,超過全部json庫,包括曾經號稱最快的jackson。而且還超越了google的二進制協議protocol buf。算法

2.功能強大json

支持各類JDK類型。包括基本類型、JavaBean、Collection、Map、Enum、泛型等。數組

3.無依賴數據結構

不須要例外額外的jar,可以直接跑在JDK上。性能

4.支持範圍廣測試

5.開源google

如下是幾個簡單的例子:

        // 字符串轉換成json數據
        String str = "{'name':'zhang','age':20}";
        String str_json1 = JSON.toJSONString(str, true);
        String str_json2 = JSON.toJSONString(str, false);
        System.out.println("格式化數據" + str_json1);
        System.out.println("未格式化數據" + str_json2);
        // json轉化簡單的實體類
        String stu = "{'name':'lisi','age':22}";
        Student ss = JSON.parseObject(stu, Student.class);
        System.out.println(ss);
        // 輸出jsonObject中的數據
        JSONObject object = JSON.parseObject(stu);
        System.out.println("獲取json數據中的數據       " + object.get("name") + " " + object.get("age"));
        // 刪除json中的數據
        String propertyName = "name";
        Set set = object.keySet();
        set.remove(propertyName);
        // object.remove(propertyName);
        System.out.println("刪除數據以後的json格式  " + object.toString());
        // json轉化list集合
        // String list = "[{'name':'zhang','age':20},{'name':'li','age':30}]";
        // 添加屬性value值
        String addPropertyName = "sex";
        String addPropertyVlaue = "man";
        object.put(addPropertyName, addPropertyVlaue);
        System.out.println("輸出新增後的json數據   " + object.toString());
        // 修改屬性的值等同於覆蓋值
        String updatePropertyName = "sex";
        String updatePropertyVlaue = "woman";
        Set set2 = object.keySet();
        if (set2.contains(updatePropertyName)) {
            // object.put(updatePropertyName, JSON.toJSONString(updatePropertyVlaue));
            object.put(updatePropertyName, updatePropertyVlaue);
        }
        System.out.println("輸出修改屬性值的json數據   " + object.toString());
        // 判斷json是否存在屬性
        System.out.println("是否存在屬性值id  " + object.keySet().contains("id"));
        // 轉換日期,這個仍是比較重要
        Object date = new Date();
        String date_json = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS");
        System.out.println("日期處理  " + date_json);
        // 解析Map集合對象
        Map<String, String> map = new HashMap<String, String>();
        map.put("name", "李四");
        map.put("age", "20");
        String map_json = JSON.toJSONString(map);
        System.out.println("map轉換成json數據     " + map_json);

        Map<String, String> map1 = new HashMap<String, String>();
        map1.put("code", "11");
        map1.put("message", "ok");
        String json = JSON.toJSONString(map1);
        JSONObject jsonObject = JSON.parseObject(json);
        System.out.println("獲取map集合中的數據   " + jsonObject.get("code") + "  " + jsonObject.get("message"));

        // 解析多個對象成list集合 使用JSONArray數組
        String array = "[{'name':'zhang','age':20},{'name':'wang','age':21}]";
        List<Student> stu_list = new ArrayList<Student>(JSONArray.parseArray(array, Student.class));
        System.out.println("輸出集合大小  " + stu_list.size());
        for (Student s : stu_list) {
            System.out.println("遍歷每個對象    " + s);
        }  

 

測試結果是:

格式化數據"{'name':'zhang','age':20}"
未格式化數據"{'name':'zhang','age':20}"
lisi 22
獲取json數據中的數據       lisi 22
刪除數據以後的json格式  {"age":22}
輸出新增後的json數據   {"age":22,"sex":"man"}
輸出修改屬性值的json數據   {"age":22,"sex":"woman"}
是否存在屬性值id  false
日期處理  "2017-01-23 17:01:00.258"
map轉換成json數據     {"age":"20","name":"李四"}
獲取map集合中的數據   11  ok
輸出集合大小  2
遍歷每個對象    zhang 20
遍歷每個對象    wang 21

 

 轉自:https://www.cnblogs.com/Ant-soldier

參考連接:

開源社區的fastjson技術內幕:   http://www.oschina.net/question/54100_30041

各個json技術之間的比較:  http://www.cnblogs.com/kunpengit/p/4001680.html

相關文章
相關標籤/搜索