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

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

参考链接:

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

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

阿里Fastjson的使用的更多相关文章

  1. 阿里fastjson工具类

    package com.common.utils.jsonUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JS ...

  2. springboot使用阿里fastjson来解析数据

    1.spring boot默认使用的json解析框架是jackson,使用fastjson需要配置,首先引入fastjson依赖 pom.xml配置如下: <project xmlns=&quo ...

  3. 阿里fastjson解析

    解析案例 String object="{total=1, rows=[{_Account=3646808, UserID=131514, Mt4Name=SewwoaIQQS, Serve ...

  4. JSONObject、 JsonObject、阿里fastJson、谷歌gson区别

    JSON:JavaScript Object Notation Java对象表示法 Java中并没有内置的 JSON 解析,需要使用第三方类库.常用的类库如下 一.Gson : 古河开发的JSON 库 ...

  5. 用阿里fastJson解析Json字符串

    一下总结来自工作代码: 1.第一种情况: 通过服务器端发送http请求获取的接送字符串. String jsonStr = HttpRequestUtil.sendGet(config.getAddr ...

  6. com.alibaba.fastjson使用介绍

    首先,介绍一下fastjson.fastjson是由alibaba开源的一套json处理器.与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的 ...

  7. springboot升级2.0 fastjson报错? 2.0以上应该怎么整合fastjson?

    SpringBoot2.0如何集成fastjson?在网上查了一堆资料,但是各文章的说法不一,有些还是错的,可能只是简单测试一下就认为ok了,最后有没生效都不知道.恰逢公司项目需要将JackSon换成 ...

  8. fastjson 1.2.6以下版本 解析字符串末尾出现/x会陷入死循环 报oom异常

    记一次使用阿里fastjson遇到的问题 项目最好将fastjson版本升级到1.2.6或以上版本 1.2.6以下版本存在漏洞,测试如下代码直接报错 public class FastJsonTest ...

  9. Fastjson远程代码执行漏洞复现

    fastjson漏洞简介 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式.它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令 ...

随机推荐

  1. Win10报错0x800f0906

    在安装适用于Linux的Windows子系统(Beta)的时候,有选中开发人员模式这一步设置->更新和安全->针对开发人员->选中开发人员模式 如果报错0x800f0906 那是因为 ...

  2. MT【303】估计

    (2016浙江填空压轴题)已知实数$a,b,c$则 (     )A.若$|a^2+b+c|+|a+b^2+c|\le1,$则$a^2+b^2+c^2<100$B.若$|a^2+b+c|+|a+ ...

  3. 给 Haproxy 创建日志文件

    背景介绍:默认下的Haproxy配置是不会生成日志文件的,而无运行日志,无法确定系统运行是否流畅,无法提起预判可能发生的故障 创建Haproxy日志文件的步骤如下vi /etc/rsyslog.con ...

  4. k短路模板(洛谷P2483 [SDOI2010]魔法猪学院)(k短路,最短路,左偏树,priority_queue)

    你谷数据够强了,以前的A*应该差不多死掉了. 所以,小伙伴们快来一起把YL顶上去把!戳这里! 俞鼎力的课件 需要掌握的内容: Dijkstra构建最短路径树. 可持久化堆(使用左偏树,因其有二叉树结构 ...

  5. genymotion ddms查看data等文件目录

    使用ADB shell 命令: 打开 Cmd  ,输入  ADB shell 命令后,回车(前提是你已经配置好了adb 的环境变量,跟配置Java的环境变量一样); 输入su回车,获取超级管理员权限 ...

  6. luogu3188/bzoj1190 梦幻岛宝珠 (分层背包dp)

    他都告诉你能拆了 那就拆呗.把每个重量拆成$a*2^b$的形式 然后对于每个不同的b,先分开做30个背包 再设f[i][j]表示b<=i的物品中 容量为$ j*2^i+W\&((1< ...

  7. 什么是Zookeeper?

    https://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=2665514106&idx=1&sn=e54aae8cf68f5a ...

  8. js 获取对象属性个数

    js 获取对象属性个数 方法一: var attributeCount = function(obj) { var count = 0; for(var i in obj) { if(obj.hasO ...

  9. CF1080F Katya and Segments Sets

    题意:给定n个区间,每个区间有颜色.m次询问,每次询问:这n个区间中所有被包含在[x, y]这一区间中的区间,它们的颜色是否取遍了[l, r]中的所有颜色. 强制在线. 解:第一步是大家都熟悉的套路⑧ ...

  10. 洛谷P4242 树上的毒瘤

    解:首先有个套路是一条边的权值是[两端点颜色不同].这个用树剖直接维护,支持修改. 每次询问建虚树,查询虚树上每条边的权值.然后树形DP,用开店的方法,每个点链加链查. #include <bi ...