本文章为全栈编程go语言体系课视频教程配套电子书,版权归 全栈编程@luboke.com所有,欢迎免费学习,转载必须注明出处!但禁止任何商业用途,否则将受到法律制裁!
package main
import (
"encoding/json"
"fmt"
)
type Post struct {
Id int
Content string
Author string
}
func main() {
post := &Post{1, "Hello World", "userA"}
b, err := json.Marshal(post)
if err != nil {
fmt.Println(nil)
}
fmt.Println(string(b))
c,err := json.MarshalIndent(post,"","\t")
if err != nil {
fmt.Println(nil)
}
fmt.Println(string(c))
// slice -> json
s := []string{"a", "b", "c"}
d, _ := json.MarshalIndent(s, "", "\t")
fmt.Println(string(d))
// map -> json
m := map[string]string{
"a":"aa",
"b":"bb",
"c":"cc",
}
e,_ := json.MarshalIndent(m,"","\t")
fmt.Println(string(e))
type Post struct {
Id int `json:"ID"`
Content string `json:"content"`
Author string `json:"-"` //`json:"-"`来表示本字段不转换为json数据,即使这个字段名首字母大写
Label []string `json:"label"`
Pubat int `json:"_,"` //如果想要json key的名称为字符"-",则可以特殊处理`json:"-,"`,也就是加上一个逗号
Omit int `json:"omit,omitempty"` //如果tag中带有,omitempty选项,那么如果这个字段的值为0值,即false、0、""、nil等,这个字段将不会转换到json中
Str bool `json:"str,string"` //如果字段的类型为bool、string、int类、float类,而tag中又带有,string选项,那么这个字段的值将转换成json字符串
}
postp := &Post{
2,
"Hello World",
"userB",
[]string{"linux", "shell"},
1,
0,
true,
}
p, _ := json.MarshalIndent(postp, "", "\t")
fmt.Println(string(p))
}
本文章为全栈编程go语言体系课视频教程配套电子书,版权归 全栈编程@luboke.com所有,欢迎免费学习,转载必须注明出处!但禁止任何商业用途,否则将受到法律制裁!