jsoniter(json-iterator)是一款快且灵活的 JSON 解析器,同时提供 Java 和 Go 两个版本。从 dsljson 和jsonparser 借鉴了大量代码。
就是快!Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com
主流的 JSON 解析器是非常慢的。Jsoniter Java 版本可以比常用的 jackson/gson/fastjson 快 3 倍。如果你需要处理大量的 JSON 格式的日志,你应该考虑一下用 dsl-json 或者 Jsoniter 来节约可观的成本。根据 dsl-json 的性能评测,JSON 格式序列化和反序列化的速度其实一点都不慢,甚至比 thrift/avro 还要快。
Jsoniter 的 Golang 版本可以比标准库(encoding/json)快 6 倍之多。而且这个性能是在不使用代码生成的前提下获得的。
完整报告请看性能评测,对于有详尽的解释。
啥都能一行搞定!Jsoniter 的目标就是帮你把事搞定,越快越好。最常见的用法只需要一行:
如果这就是 Jsoniter 的一切本领,那么它不过是个平庸之辈而已。然而 Jsoniter 源于作者使用现有解析器时的不满与愤怒,它绝不会别人的老路的。想要体会到 Jsoniter 的独特体验能带来什么,我们来比较一下现有常规的 JSON API 的使用体验。
根据过去的老经验,你一定知道下面这种用法是效率很低而且笨拙的,但是有些时候又不得不这么用:
想要最佳的性能以及代码工整,你最好定义一个类来指定数据的格式:
在写正式的业务逻辑的代码时,这当然是很好的实践。但是如果你只是想从一个JSON嵌套结构里取一个内部的字符串的值的时候,必须提前定义每层数据结构未免有点太费周章了。能一行搞定的,就别费那么些话了:
deserialize 的返回值类型是“Any”,它有点类似于 Map<String, Object>。两者都是通用的数据容器,但是和 Map<String, Object> 不同,Any 有通过 api 使得数据获取上更方便:
更好的消息是,这种 schema-less 的体验在延迟解析技术的帮助下,做到了性能上的无损。所有没有别读取的字段,仍然会以 JSON 的原始格式保留。使用 Any 的性能要比使用 Map<String, Object> 好得多。现在,在 Java 语言中,你也体会到 Javascript 或者 PHP 解析 JSON 时那种丝滑般体验。.
Jsoniter 不仅仅在运行时要做最快的解析器,也同时非常努力地变成代码写起来最方便的解析器。
从别的库迁移过来很容易 文档Jsoniter 功能多多,文档以例子为主。有很多代码示例来演示这些常用任务如何实现:
怎样获取Java 版本
<dependency> <groupId>com.jsoniter</groupId> <artifactId>jsoniter</artifactId> <version>0.9.16</version> </dependency>
Go 版本
go get github.com/json-iterator/go
欢迎你的贡献小项目bug难免,欢迎提 issue 和 pull request
京ICP备16068519号
jsoniterJava 0.9.16 jsoniterGo 1.0.3This document is also available as
created by taowen@gmail.com