• 阿里巴巴fastjson 包的使用解析json数据


    Fastjson是一个Java语言编写的高性能功能完善的JSON库。由阿里巴巴公司团队开发的.

    主要特性主要体现在以下几个方面:

    1.高性能

    fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。

    2.功能强大

    支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。

    3.无依赖

    不需要例外额外的jar,能够直接跑在JDK上。

    4.支持范围广

    5.开源

    以下是几个简单的例子:

            // 字符串转换成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

    参考链接:

    开源社区的fastjson技术内幕:   http://www.oschina.net/question/54100_30041

    各个json技术之间的比较:  http://www.cnblogs.com/kunpengit/p/4001680.html

  • 相关阅读:
    (转)老话题,权限设计及实现!
    (转)深入理解最强桌面地图控件GMAP.NET 百度地图
    (转)一步一步Asp.Net MVC系列_权限管理设计起始篇
    (转)常见存储过程分页PK赛——简单测试分析常见存储过程分页速度
    (转)正则表达之零宽断言(零宽度正预测先行断言)
    holer实现外网访问本地网站
    ural(Timus) 1039. Anniversary Party
    uva 10308 Roads in the North
    其他OJ 树型DP 技能树(未通过)
    ural(Timus) 1067. Disk Tree
  • 原文地址:https://www.cnblogs.com/Ant-soldier/p/6339426.html
Copyright © 2020-2023  润新知