阿里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爆出多个反序列化远程命令 ...
随机推荐
- RFC2544测试指标
RFC2544测试指标 参考:https://wenku.baidu.com/view/3abbb5bf960590c69ec3769d.html RFC2544性能测试介绍 参考:https:// ...
- 【 HDU2966 】In case of failure(KD-Tree)
BUPT2017 wintertraining(15) #5E HDU - 2966 题意 给平面直角坐标系下的n个点的坐标,求离每个点和它最近点的距离的平方.\(2 \le n \le 10^5\) ...
- python学习日记(文件操作)
文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...
- 【比赛】NOIP2018 赛道修建
最小值最大,二分长度 然后判断赛道大于等于这个长度最多可以有多少条 可以贪心,对于一个点和它的一些儿子,儿子与儿子之间尽量多配(排序后一大一小),剩下的选个最长的留给自己的父亲就好了 具体实现可以用一 ...
- docker_flannel
目录 一.安装etcd 安装 运行 验证 二.安装和配置 flannel 三. Docker 中使用 flannel 配置 Docker 连接 flannel 容器连接到 flannel 网络 四.f ...
- linux统计使用最多的10个命令
# cat /root/.bash_history | awk '{print $1}' | sort | uniq -c | sort -nr | head history 查看命令历史 ...
- hexo博客添加功能
设置Hexo主题模式 Hexo主题中,有三种不同的模式,通过切换模式,让NexT主题显示不一样的样式.在NexT根目录下有一个同样名称为_config.yml,为了区分hexo根目录下的_config ...
- nginx.conf(centos7 1.14)主配置文件修改
#nginx1.14 centos7# For more information on configuration, see:# * Official English Documentation: h ...
- [BJOI2012]最多的方案(记忆化搜索)
第二关和很出名的斐波那契数列有关,地球上的OIer都知道:F1=1, F2=2, Fi = Fi-1 + Fi-2,每一项都可以称为斐波那契数.现在给一个正整数N,它可以写成一些斐波那契数的和的形式. ...
- 对于Spring中注入对象失败的问题
1.今天进行了一段代码,经过检查发现config配置文件没问题,注入注解也编写正确,但是RedisTemplate就是会抛出空指针异常. 进过一系列检查发现,其在用户使用该类的时候采用的是new方式创 ...