Golang的json包
本文对常见的json包做一些介绍,方便快速入门。每一小节均有示例说明。大家在实际开发中可以选择适合自己的json包。
encoding/json
encoding/json
是官方提供的标准json, 实现RFC 7159中定义的JSON编码和解码。使用的时候需要预定义struct
,原理是通过reflection
和interface
来完成工作, 性能低。
常用的接口:
func Marshal(v interface{}) ([]byte, error)
生成JSONfunc Unmarshal(data []byte, v interface{}) error
解析JSON到struct
示例1 生成JSON:
type ColorGroup struct { ID int Name string Colors []string } group := ColorGroup{ ID: 1, Name: "Reds", Colors: []string{"Crimson", "Red", "Ruby", "Maroon"}, } b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stdout.Write(b)
Output:
{"ID":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}
示例2 解析JSON:
var jsonBlob = []byte(`[ {"Name": "Platypus", "Order": "Monotremata"}, {"Name": "Quoll", "Order": "Dasyuromorphia"} ]`) type Animal struct { Name string Order string } var animals []Animal err := json.Unmarshal(jsonBlob, &animals) if err != nil { fmt.Println("error:", err) } fmt.Printf("%+v", animals)
Output: