阿里Fastjson的使用
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的使用的更多相关文章
- 阿里fastjson工具类
package com.common.utils.jsonUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JS ...
- springboot使用阿里fastjson来解析数据
1.spring boot默认使用的json解析框架是jackson,使用fastjson需要配置,首先引入fastjson依赖 pom.xml配置如下: <project xmlns=&quo ...
- 阿里fastjson解析
解析案例 String object="{total=1, rows=[{_Account=3646808, UserID=131514, Mt4Name=SewwoaIQQS, Serve ...
- JSONObject、 JsonObject、阿里fastJson、谷歌gson区别
JSON:JavaScript Object Notation Java对象表示法 Java中并没有内置的 JSON 解析,需要使用第三方类库.常用的类库如下 一.Gson : 古河开发的JSON 库 ...
- 用阿里fastJson解析Json字符串
一下总结来自工作代码: 1.第一种情况: 通过服务器端发送http请求获取的接送字符串. String jsonStr = HttpRequestUtil.sendGet(config.getAddr ...
- com.alibaba.fastjson使用介绍
首先,介绍一下fastjson.fastjson是由alibaba开源的一套json处理器.与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的 ...
- springboot升级2.0 fastjson报错? 2.0以上应该怎么整合fastjson?
SpringBoot2.0如何集成fastjson?在网上查了一堆资料,但是各文章的说法不一,有些还是错的,可能只是简单测试一下就认为ok了,最后有没生效都不知道.恰逢公司项目需要将JackSon换成 ...
- fastjson 1.2.6以下版本 解析字符串末尾出现/x会陷入死循环 报oom异常
记一次使用阿里fastjson遇到的问题 项目最好将fastjson版本升级到1.2.6或以上版本 1.2.6以下版本存在漏洞,测试如下代码直接报错 public class FastJsonTest ...
- Fastjson远程代码执行漏洞复现
fastjson漏洞简介 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式.它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令 ...
随机推荐
- python3 字典dict
字典是用大括号{}表示 dict() 键必须是唯一的,但值则不必:键是不可变的,如字符串.数字.元组,值可以取任意数据类型: 可以迭代, del可以删除一对键值,del Dict['key'] 重复给 ...
- luogu3278/bzoj3323 多项式的运算 (splay)
mulx的操作,其实就是给r+1的系数+=r的系数,然后删掉r,把l~r-1向右移一位,再插一个0到原来的位置 splay维护区间加和区间乘就好了 (一定要注意做事的顺序,一件事都做完了再去做别的,否 ...
- CF1137C Museums Tour(Tarjan,强连通分量)
好题,神题. 题目链接:CF原网 洛谷 题目大意: 一个国家有 $n$ 个城市,$m$ 条有向道路组成.在这个国家一个星期有 $d$ 天,每个城市有一个博物馆. 有个旅行团在城市 $1$ 出发,当天是 ...
- 20165223 week1测试查漏补缺
week1查漏补缺 经过第一周的学习后,在蓝墨云班课上做了一套31道题的小测试,下面是对测试题中遇到的错误的分析和总结: 一.背记题 不属于Java后继技术的是? Ptyhon Java后继技术有? ...
- deque双端队列容器
//deque双端队列容器 //deque双端队列容器与vector一样,采用线性表顺序存储结构,但与vector不同的是, //deque采用的分块线性存储结构来存储数据,每块的大小一般为512字节 ...
- python学习day7 深浅拷贝&文件操作
4-4 day07 深浅拷贝&文件操作 .get()用法 返回指定键的值,如果值不在字典中返回默认值. info={'k1':'v1,'K2':'v2'}mes = info.get('k1' ...
- jquery 表单序列化
1.序列化为URL 编码文本字符串 var serialize = $("form[name=testForm]").serialize(); console.log(serial ...
- 初入webform的杂七杂八
客户端---IIS(Internet Information Services的缩写,意为互联网信息服务管理器)---.NET framework---数据库 1.Repeater控件:对应的集合有5 ...
- 用lemon测交互题
题目类型:传统. 答案比较类型:逐行比较类型(忽略多余空格和制表符). 配置:交互. 编译器参数: -o %s %s.* ..\..\data\%s\judge.cpp -Wl,--stack= ju ...
- 洛谷P5111 zhtobu3232的线段树
题意:给定线段树,上面若干个节点坏了,求能表示出多少区间. 区间能被表示出当且仅当拆出来的log个节点都是好的. 解:每个区间在最浅的节点处计算答案. 对于每个节点维护从左边过来能有多少区间,从右边过 ...