千家信息网

高性能JSON开发包FastJson怎么用

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,高性能JSON开发包FastJson怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Fastjson介绍Fastjson是一个J
千家信息网最后更新 2025年02月04日高性能JSON开发包FastJson怎么用

高性能JSON开发包FastJson怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Fastjson介绍

Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。
1、遵循http://json.org标准,为其官方网站收录的参考实现之一。
2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。http://code.alibabatech.com/wiki/display/FastJSON/Home
5、具有超高的性能,java世界里没有其他的json库能够和fastjson可相比了。

如果获得Fastjson?
SVN:http://code.alibabatech.com/svn/fastjson/trunk/
WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home
Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON

如果你使用了Maven,maven repository配置如下:

        opensesame        Alibaba OpenSource Repsoitory        http://code.alibabatech.com/mvn/releases/                        false        

pom.xml文件中加入依赖依赖:

        com.alibaba        fastjson        1.0.4

如果没有使用maven,可以直接下载:

Binary : http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1.jar
Source :http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1-sources.jar
Subversion : http://code.alibabatech.com/svn/fastjson/

使用介绍:
Fastjson的最主要的使用入口是com.alibaba.fastjson.JSON

import com.alibaba.fastjson.JSON;public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArraypublic static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObjectpublic static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBeanpublic static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArraypublic static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

代码示例:
代码示例用到类User和Group:

public class User {        private Long id;        private String name;        public Long getId() { return id; }        public void setId(Long id) { this.id = id; }        public String getName() { return name; }        public void setName(String name) { this.name = name; }}public class Group {        private Long id;        private String name;        private List users = new ArrayList();        public Long getId() { return id; }        public void setId(Long id) { this.id = id; }        public String getName() { return name; }        public void setName(String name) { this.name = name; }        public List getUsers() { return users; }        public void setUsers(List users) { this.users = users; }}

Encode代码示例:

import com.alibaba.fastjson.JSON;Group group = new Group();group.setId(0L);group.setName("admin");User guestUser = new User();guestUser.setId(2L);guestUser.setName("guest");User rootUser = new User();rootUser.setId(3L);rootUser.setName("root");group.getUsers().add(guestUser);group.getUsers().add(rootUser);String jsonString = JSON.toJSONString(group);System.out.println(jsonString);

Decode 代码示例:

Group group2 = JSON.parseObject(jsonString, Group.class);

之前的一个版本是1.1.0,1.1.0采用asm和SortFastMatch算法提高性能,由于过于着急展示其优越的性能,没有进行严格测试就发布了。

1.1.1相对于1.1.0,这是一个比较稳定的版本了,行测试覆盖率重新提升到90%以上,build verify testcase 983个。

这个版本进一步完善了asm和SortFieldFastMatch算法,进一步提升了性能,同时补充了大量的testcase,提升了稳定性,我向你推荐使用这个版本,使用这个版本你将会得到令人惊奇的性能。

1.1.1版本的asm来源自objectweb的asm项目,根据fastjson的需要做裁剪,确保引入asm的同时不引起包大小的过渡变大。

为了更好使用sort field martch优化算法提升parser的性能,fastjson序列化的时候,缺省把SerializerFeature.SortField特性打开了。反序列化的时候也缺省把SortFeidFastMatch的选项打开了。这样,如果你用fastjson序列化的文本,输出的结果是按照fieldName排序输出的,parser时也能利用这个顺序进行优化读取。这种情况下,parser能够获得非常好的性能。

我使用github.com/eishay/jvm-serializers/提供的程序做测试,性能数据如下:

序列化时间反序列化时间大小压缩后大小
java序列化854643199889541
hessian664310043501313
protobuf30081694239149
thrift31821951349197
avro35752095221133
json-lib45734149741485263
jackson32452986503271
fastjson22921499468251

测试跑的脚本是:

./run -chart -include=`cat serializers.txt | tr "\\n" ","`  data/media.1.cks

从上面的数据来看,fastjson的性能已经超越protobuf、thrift、avro这些二进制协议了。一个文本协议的性能超越二进制协议是很难的,我很高兴向大家宣布我做到了!!

鉴于fastjson优越的性能表现,我建议做如下事情;
1、替换其他所有的json库,java世界里没有其他的json库能够和fastjson可相比了。
2、使用fastjson的序列化和反序列化替换Java serialize,java serialize不单性能慢,而且体制大。
3、使用fastjson替换hessian,json协议不必hessian体积大,而且fastjson性能优越,数倍于hessian
4、把fastjson用于memached缓存对象数据。

如何得到它?

如果您是Maven用户,只需使用我们的Maven存储库即可(http://code.alibabatech.com/mvn/releases/)具有后续依赖性

     com.alibaba     fastjson     1.1.1

关于高性能JSON开发包FastJson怎么用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

性能 序列 文本 版本 代码 示例 测试 开发 优越 大小 数据 算法 问题 开发包 高性能 世界 二进制 同时 时候 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 不属网络安全服务的是 在哪里能看到国际服的服务器 网络安全法国家采取的措施 浙江应用软件开发定做价格 ibm服务器 扩容 十五派网络安全视频教程 怎么删除微信数据库文件 系统网络安全近期价格 软件开发综合实验室的特点 西安高新区网络安全会议 学手机网络技术 粘土服务器怎么全部打字 网络安全小学生知识内容 文献检索所有数据库优缺点 excel怎样读取数据库 2020网络安全周开幕 南京优信网络安全技术研究院 网络安全与信息化的基本要求 宁波提供网络技术市场价格 网络安全工程师要学什么专业 北京软件开发贵吗 怎样设置手机服务器网速快 郑州直播软件开发价格 计算机与网络技术是干什么的 梦幻西游河南区那个服务器人最多 秦时明月2数据库 永恒之塔为什么卡在服务器画面 聚跑软件开发 hp服务器管理口默认ip地址 服务器可以当家庭主机用吗
0