Java-请问有更好的Java JSON库吗?

Java-请问有更好的Java JSON库吗?

晚风撩人 发布于 2017-05-01 字数 277 浏览 1160 回复 6

Java支持JSON是通过第三方库来实现的,用过Java JSON库的都知道,实在是不好用,完全比不过php的json_encode/json_decode方便,请问有比 http://json.org/提供的java库更好用的第三方库吗?或者能不能提供一些好的实现算法?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

偏爱自由 2017-09-03 6 楼

我们公司的架构部门专门对各种json框架进行了测试,最后用的jackson 这个框架,使用方便,速度够快

虐人心 2017-08-26 5 楼

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

我使用github.com/eishay/jvm-serializers/提供的程序做测试,性能数据如下:
序列化时间 反序列化时间 大小 压缩后大小
java序列化 8546 43199 889 541
hessian 6643 10043 501 313
protobuf 3008 1694 239 149
thrift 3182 1951 349 197
avro 3575 2095 221 133
json-lib 45734 149741 485 263
jackson 3245 2986 503 271
fastjson 2292 1499 468 251

测试跑的脚本是:

Java代码 收藏代码

./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缓存对象数据。

h3. How to get it?
If you're Maven user, just use our maven repository(http://code.alibabatech.com/mvn/releases/) with folloging dependency

Java代码 收藏代码

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.1</version>
</dependency>

h3. Downlaods
Source : http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1.jar
Binary :http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1-sources.jar
Subversion :
Java代码 收藏代码

 http://code.alibabatech.com/svn/fastjson/

http://www.iteye.com/topic/848392

浮生未歇 2017-06-28 4 楼

推荐使用Gson
http://code.google.com/p/google-gson/

泛泛之交 2017-06-10 3 楼

我之前也用SimpleJson(fast-json基础于SimpleJson),并且自己加了模板特性,但后来仍然使用了gson
ali的这个不支持模板,并且用强制转型来反序列化,很不优雅,
作为一个高效的企业中间件的确可以胜任,但作为开源项目并不适合,因为他只针对性满足某部分业务需求,并且重复强调的唯一价值就是速度,但强悍并不永远等于速度

速度方面我测试了下,parse 10万次取平均大约:
fast-json:12us
gson:17us
SimpleJson:30us
jackson:35us

的确是最快的,但为了5us (20万分之一秒) 丢弃掉模板,用丑陋的强制转型,和面对更多的未知序列化数据bug,还是算了吧...

浮生未歇 2017-06-07 2 楼

一直使用JSON-LIB. http://json-lib.sourceforge.net/
优点: 功能强大, 扩展性强, Apache Project
缺点: 依赖多
Function:
Using the JSONSerializer
Working with arrays and collections
Working with objects
Working with XML

晚风撩人 2017-05-27 1 楼

google-gson
http://code.google.com/p/google-gson/

Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Gson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of.
例子:

 public class Test {
public static void main(String[] args) {
HashMap<Integer,Integer> obj = new HashMap<Integer,Integer>();
obj.put(1,1);
obj.put(3,1);
obj.put(4,1);
obj.put(5,1);

Gson gson = new Gson();
String jsonStr = gson.toJson(obj);//转换成JSON字符串
System.out.println(jsonStr);

Type t = new TypeToken<HashMap<Integer, Integer>>() {}.getType();// 把JSON字符串转换成原来的Java对象
HashMap<Integer,Integer> o = gson.fromJson(jsonStr, t);
System.out.println(o);
}
}