阿里巴巴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
阿里巴巴fastjson 包的使用解析json数据的更多相关文章
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- fastjson生成和解析json数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- Java创建和解析Json数据方法(五)——Google Gson包的使用
(五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法: ①toJson():将java对象转化为json数据 ...
- Java创建和解析Json数据方法(四)——json-lib包的使用
(四)json-lib包的使用 既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...
- Java创建和解析Json数据方法(三)——json-lib包的使用
(三)json-lib包的使用 这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...
- Java创建和解析Json数据方法(二)——org.json包的使用
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
- Java创建和解析Json数据方法——org.json包的使用(转)
org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- C++中的类所占内存空间+继承中的成员访问控制
C++学习之继承中的成员访问控制 C++中的类所占内存空间总结
- ES6中的迭代器(Iterator)和生成器(Generator)(二)
一.内建迭代器 迭代器是ES6的一个重要组成部分,在ES6中,已经默认为许多内建类型提供了内建迭代器,只有当这些内建迭代器无法实现目标时才需要自己创建.通常来说当定义自己的对象和类时才会遇到这种情况, ...
- Git的微操作
合并分支代码,简单操作: 1.切换到master主干代码 2.到git repositories 视图,点击需要合并的分支,例如v1.1.9 点击merge 进行合并 3.然后push to Upst ...
- Java基础学习过程
转载:http://blog.csdn.net/scythe666/article/details/51699954JVM 1. 内存模型( 内存分为几部分? 堆溢出.栈溢出原因及实例?线上如何排查? ...
- hdu 4630 No Pain No Game(线段树+离线操作)
No Pain No Game Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 系统重装 JUJUMAO VHD安装WIN7解析
1 把原有系统分区一个删除(使用第三方分区工具如PM或者PQ)并新建一个系统分区(也可以同时新建其他分区如D盘,E盘,但是一定要把C盘设置为NTFS格式并且活动的!) 2 将JUJUMAO_VHD ...
- NGINX 缓存使用指南
NGINX 缓存使用指南 [proxy_cache] Nginx 一个web缓存坐落于客户端和“原始服务器(origin server)”中间,它保留了所有可见内容的拷贝.如果一个客户端请求的内容在缓 ...
- tail -f 不断刷新
查看log tail -f 会将其不断刷新显示
- 使用浏览器地址栏调用CXF Webservice的写法
/* * 通过url调用 * http://localhost:8080/EFP/webService/TestWebservice/testOut/arg0/liuyx */ http://loca ...
- 用python做自己主动化測试--绘制系统性能趋势图和科学计算
在性能測试中.我们常常须要画出CPU memory 或者IO的趋势图. 预计大学里.大多数人都学习过matlib, 领略了matlib绘图的强大. python提供了强大的绘图模块matplotlib ...