ffjson 为 Go 结构产生
MarshalJSON 和
UnmarshalJSON 功能
。新
生成的
功能,减轻了进行序列化时对
运行反射的依赖,速度比之前更快
2
至3倍。
在
ffjson
不能识别
涉及
类型
的情况下,它会回退到 encoding/json,这意味着
ffjson 是安全替代原件。
通过使用 ffjson,您的
JSON 序列化
只会越来越快,因为没有额外代码
更改。
当你改变
struct 时,你需要重新运行 `ffjson`
(
或将它作为编译工具的一部分)。
###
入门:
如果 myfile.go 包含结构类型,你想要更快,假设 GOPATH 被设置为现有项目(这意味着在这个特殊的例子,如果 myfile.go 是在 MyProject 目录的一个合理值,该项应在`$GOPATH/src/myproject`
)
,你可以运行:
<pre class="brush:java;toolbar: true; auto-links: false;">go get -u github.com/pquerna/ffjson
ffjson myfile.go
git add myfile_ffjson.go</pre>
###
性能:
*
`MarshalJSON` is
2x to 3x
faster than `encoding/json`.
*
`UnmarshalJSON` is
2x to 3x
faster than `encoding/json`.
### 特点:
*
支持解组(
Unmarshal Support):从
v0.9版本之后,开始支持散集结构。
*
直接替代原件(Drop in Replacement
):因 ffjson 执行的接口已被 encoding/json 定义,用户使用的性能增强。
*
支持所有类型:`ffjson`
适用于大多数 Go 的类型——有任何类型路径不支持的话,他将自动会退到
encoding/json,这意味着所有的工作都要在 box 外工作,如果不是,打开一个issue 。
*
ffjson 跳跃:如果你想
ffjson 忽略一个结构,添加
ffjson ,
跳过你想忽略的部分,然后重新串连。
*
拓展测试:包含广泛的测试套件,适合与
JSON parser 相对的模糊测试。