目录
安装easyjson使用easyjson使用示例如果使用go语言自带的json库,使用的是反射,而go语言中反射性能较低。easyjson就是一个比较好的替代方案。
esayjson安装(https://gitcode.net/mirrors/mailru/easyjson?utm_source=csdn_github_accelerator)
go get -u github.com/mailru/easyjson go install github.com/mailru/easyjson/easyjsonorgo go build -o easyjson github.com/mailru/easyjson/easyjson(这里默认在当前目录生成easyjson二进制可执行文件)
安装easyjson
# for Go < 1.17 go get -u github.com/mailru/easyjson/... # for Go >= 1.17 go get github.com/mailru/easyjson && go install github.com/mailru/easyjson/...@latest
说下我的环境:win10,go1.18,如下图
安装完毕后,GOPATH里bin下就有easyjson.exe。
使用go env 查看如我的gopath为:C:\Users\77293\go
使用easyjson
go mod init demo
比如我的当前工作目录demo下初始化mod,创建一个文件夹model,在model下新建student.go文件:
定义结构体:
记得在需要使用easyjson的结构体上加上//model:json 标注。 此处model是我的包路径名即为model,代码如下:
package model import "time" //model:json type School struct { Name string `json:"name"` Addr string `json:"addr"` } type Student struct { Id int `json:"id"` Name string `json:"s_name"` School School `json:"s_chool"` Birthday time.Time `json:"birthday"`
可以进入结构体包model下执行:
easyjson -all student.go
运行完后,该文件夹中有一个student_easyjson.go,该文件中就是easyjson帮我们生成的MarshalJSON和UnmarshalJSON方法.
使用示例
package main import ( "demo/model" "fmt" "time" ) func main() { s := model.Student{ Id: 11, Name: "qq", School: model.School{ Name: "CUMT", Addr: "xz", }, Birthday: time.Now(), } bt, err := s.MarshalJSON() // MarshalJSON fmt.Println(string(bt), err) json := `{"id":1,"s_name":"克莱尔","s_chool":{"name":"中南","addr":"wuhan"},"birthday":"2003-08-04T20:58:07.9894603+08:00"}` str := model.Student{} str.UnmarshalJSON([]byte(json)) // UnmarshalJSON fmt.Println(str) }
运行结果:
{"id":11,"s_name":"qq","s_chool":{"name":"CUMT","addr":"xz"},"birthday":"2022-04-17T20:48:07.9274949+08:00"}
{1 克莱尔 {中南 wuhan} 2003-08-04 20:58:07.9894603 +0800 CST
小结:go自带JSON库使用的反射原理,性能相对较差,可以使用easyjson代替。
到此这篇关于Goeasyjson使用技巧的文章就介绍到这了,更多相关Goeasyjson使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
下一篇:微信小程序开发工具介绍
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?