前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Golang】json使用

【Golang】json使用

作者头像
会呼吸的Coder
发布2020-02-17 16:56:13
9550
发布2020-02-17 16:56:13
举报

在web开发中,json好像是一个绕不开的一个模块,今天我们来讲一下golang的json标准库.

encoding/json是golang官方提供的json标准款,实现了RFC 7159中定义的JSON编码和解码.在使用的过程中需要预先定义好struct.相对来说,其性能较低.

其提供了两个函数,

  1. Marshal()用于生成JSON
  2. UNmarshal()用于解析JSON到struct

下面我们具体来实践一下:

1,结构体解析为json

type CodeType struct {
	Name string
}
func main() {
	codeType := CodeType{
		Name: "Golang",
	}
	jsonInfo, err := json.Marshal(codeType)
	if err != nil {
		fmt.Println( err)
	}
	os.Stdout.Write(jsonInfo)
}

输出结果为:

{"Name":"Golang"}

2.json解析为结构体

type CodeType struct {
	Name string
}
func main() {

	var jsonInfo =[]byte(`[
{"Name":"Golang"},{"Name":"Python"}
]`)

	var codeType  []CodeType
	err :=json.Unmarshal(jsonInfo,&codeType)
	if err !=nil {
		fmt.Println(err)

	}
	fmt.Printf("%+v",codeType)
}

输出结果为:

[{Name:Golang} {Name:Python}]

json标准库目前就这两个方法

但是其有性能瓶颈,主要问题在于反射机制,这时候优秀的第三方库应运而生。

接下来我们介绍两个好用的json解析库easyjson和ffjson

这两个库并没有用反射的原理去实现,而是为struct生成静态的MarshalJSON和UnmarshalJSON函数,这种类似于预编译,调用编码解码时直接使用生成的函数,从而减少对反射的依赖,比标准库效率要高很多,但是也有弊端,用起来相对麻烦

这个就留给大家自己探索吧

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 初级程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档