阿里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爆出多个反序列化远程命令 ...
随机推荐
- codevs 2606 约数和问题 (数学+分块)
题目描述 Description Smart最近沉迷于对约数的研究中. 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f(X) ...
- Java8的Stream语法详解(转载)
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...
- C 头文件、宏、编译问题
@2019-02-15 [小记] > C 头文件的防重复包含是针对同一个源文件而言 原因: #include 头文件就是一段代码的拷贝,头文件中若有类型定义等,重复包含就会造成编译错误,若无类型 ...
- js 时间类函数
js 时间类是 Date() var currtime = new Date();// 实例一个时间,是当前时间 接收一个时间戳为参数 var time2=new Date(currtime.get ...
- LaTeX教程与下载
LaTeX教程与下载如下: 其实,下载好CTEX 的步骤只有三步.第一步下载好CTEX ,第二步下载编辑器Texstudio ,第三步安装配置TexStudio 详细步骤: 第一步:下载CTEX La ...
- Hello Object Oriented!
继计组之后,北航计算机学院又一大神课! 希望能以此为契机,和更多热爱技术的朋友们交流.让我们一起,共同进步~ [2019.4.27更新] 建立博客园的最初目的,是为了北航计算机学院OO课程设计的需要. ...
- CentOS6.5安装JDK1.8
1.查看Linux自带的JDK是否已安装(如果安装则卸载CentOS已安装的低版本) 安装好的CentOS会自带OpenJdk,用命令 java -version,会有下面的信息: java -ver ...
- HEOI2019退役总结
真的很快,一切就都已经尘埃落定了. 其实经历不是很圆满的时候,是不想写这一类游记总结的,但这次其实不太一样,总要让这段经历有始有终. 可能会很啰嗦…… 赛前 收到了若干鼓励,包括老师的手写祝福和学长学 ...
- CF747F Igor and Interesting Numbers
我佛了,这CF居然没有官方题解. 题意:给定k,t,求第k小的16进制数,满足每个数码的出现次数不超过t. 解: 每个数都有个出现次数限制,搞不倒.一开始想到了排序hash数位DP,不过写了写觉得不胜 ...
- mac 修改root密码
1.用当前用户登录进去bash: 输入命令: sudo passwd root