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)
  • 相关阅读:
    IIs实验,中间件漏洞
    sql注入2
    sql注入1
    莫比乌斯函数,数论中的战斗机
    test2
    test
    素数判定随机算法
    Nginx for windows 访问路径包含中文
    数组元素循环右移
    经典面试题 之 数组的循环右移
  • 原文地址:https://www.cnblogs.com/ghj1976/p/4281906.html
Copyright © 2011-2022 走看看