首页 > Web开发 > 详细

megajson 高性能的json序列化、反序列化工具

时间:2015-02-09 17:52:14      阅读:237      评论:0      收藏:0      [点我收藏+]

go 自带的 encoding/json 支持json的序列化和反序列化, 然而它是基于反射的,有下面几个缺点:

  • 反射是性能差的代名词, 并且无法在编译时进行优化。
  • 只有 Public 字段才可以,反射库只能反射出暴露出来的字段,这意味着你无法对private 字段进行JSON转化。

https://github.com/benbjohnson/megajson 针对这个问题做了优化,它是一个代码生成工具, 通过使用 go/parser 和 go/ast 包去产生你自己类型实体的自定义的 序列号和反序列化代码。 这里的序列号和反序列化知道你的数据类型,所以不会用反射,继而解决了上面问题。

通过测试, Go 1.2 下, Megajson  比 encoding/json 包有2倍的性能提升。

 

安装方法:

$ go get github.com/benbjohnson/megajson

 

使用:

直接运行 megajson 命令,它会产生你需要的序列化和反序列化文件:

$ megajson mypkg/my_file.go

这样会产生2个文件:

mypkg/my_file_encoder.go
mypkg/my_file_decoder.go

 

它的使用比较简单,如下:

err := NewMyStructEncoder(writer).Encode(val)
err := NewMyStructDecoder(reader).Decode(&val)

megajson 高性能的json序列化、反序列化工具

原文:http://www.cnblogs.com/ghj1976/p/4281906.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!