zoukankan      html  css  js  c++  java
  • megajson 高性能的json序列化、反序列化工具

    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)
  • 相关阅读:
    pythone 请求响应字典
    python strip()
    python,datetime
    How Flask Routing Works
    python __file__ 与argv[0]
    Python的zip函数
    Python中的__new__()方法与实例化
    python,dict的setdefault方法
    python yield
    python with用法
  • 原文地址:https://www.cnblogs.com/ghj1976/p/4281906.html
Copyright © 2011-2022 走看看