son数据格式
参见json数据格式说明。
如果没操作过json数据,建议先看下上面的文章,有助于理解本文后面的内容。
Go json包
Marshal():Go数据对象 -> json数据
UnMarshal():Json数据 -> Go数据对象
1 2 func Marshal(v interface{}) ([]byte, error) func Unmarshal(data []byte, v interface{}) error构建json数据
Marshal()和MarshalIndent()函数可以将数据封装成json数据。
- struct、slice、array、map都可以转换成json
 - struct转换成json的时候,只有字段首字母大写的才会被转换
 - map转换的时候,key必须为string
 - 封装的时候,如果是指针,会追踪指针指向的对象进行封装
 
例如:
有一个struct结构:
1 2 3 4 5 type Post struct {     Id      int     Content string     Author  string }这个结构表示博客文章类型,有文章ID,文章内容,文章的提交作者。这没什么可说的,唯一需要指明的是:它是一个struct,struct可以封装(编码)成JSON数据。
要将这段struct数据转换成json,只需使用Marshal()即可。如下:
1 2 3 4 5 post := &Post{1, "Hello World", "userA"} b, err := json.Marshal(post) if err != nil {     fmt.Println(nil) }Marshal()返回的是一个[]byte类型,现在变量b就已经存储了一段[]byte类型的json数据,可以输出它:
                        
                        
                    