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

阿里巴巴fastjson 包的使用解析json数据的更多相关文章

  1. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  2. Spring Boot返回json数据及完美使用FastJson解析Json数据

     Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...

  3. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  4. Java创建和解析Json数据方法(五)——Google Gson包的使用

    (五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法:         ①toJson():将java对象转化为json数据 ...

  5. Java创建和解析Json数据方法(四)——json-lib包的使用

    (四)json-lib包的使用         既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...

  6. Java创建和解析Json数据方法(三)——json-lib包的使用

    (三)json-lib包的使用         这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...

  7. Java创建和解析Json数据方法(二)——org.json包的使用

    (二)org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...

  8. Java创建和解析Json数据方法——org.json包的使用(转)

    org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...

  9. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. sql中用JOIN USING 简化JOIN ON

    Mysql 中联接SQL语句中,ON子句的语法格式为:table1.column_name = table2.column_name. 当模式设计对联接表的列采用了相同的命名样式时,就可以使用 USI ...

  2. 【Hadoop】Hadoop MR 自定义序列化类

    1.基本概念 2.Mapper代码 package com.ares.hadoop.mr.flowsum; import java.io.IOException; import org.apache. ...

  3. 关于ionic打包出错:ionic Unable to start the daemon process

    一直试都没问题的ionic build android  今天竟然冒出了这个错误 Error:Unable to start the daemon process. This problem migh ...

  4. [转]Tomcat处理一个HTTP请求的过程

    1.Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. ...

  5. git个人使用总结(命令版)

    一.基础命令 快照类操作:add.status.diff.commit.reset.rm.mv 分支类基本操作:branch.checkout.log.stash 分享及更新项目基本操作:pull.p ...

  6. 读EXCEL

    import xlrdbook=xlrd.open_workbook('app_student.xls')sheet=book.sheet_by_index(0)#根据(索引)顺序获取到sheet页# ...

  7. mongoDB 索引的用法

    http://www.cnblogs.com/lipan/archive/2011/03/28/1997202.html MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的, ...

  8. c#调用WinRAR软件压缩和解压文件

    using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Linq ...

  9. sprint3 【每日scrum】 TD助手站立会议第八天

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 调整闹钟和整个项目的显示效果,最后做出了微信界面滑动的显示效果 整合原来做过的功能,并做相应的改进,整合其他的功能 在界面的设计和用户交互上始 ...

  10. C#:异步编程和线程的使用(.NET 4.5 ),异步方法改为同步执行

    摘自:http://www.codeproject.com/Articles/996857/Asynchronous-programming-and-Threading-in-Csharp-N(葡萄城 ...