多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
编码JSON >其他数据转json > func Marshal(v interface{}) ([]byte, error) > v interface{} 需要转换的映射或者结构体 > []byte 输出字节需要根据类型转换输出比如 string() >格式化josn >func MarshalIndent(v interface{}, perfix, indent string) ([]byte, error) > v interface{} 需要转换的映射或者结构体 > []byte 输出字节需要根据类型转换输出比如 string() > perfix 前缀 使用默认 > indent string 前缀 ,一个缩进" " ``` package main import ( "encoding/json" "fmt" ) func main() { // 创建一个 映射map var m = make(map[string]interface{}, 4) m["name"] = "Pony" m["age"] = 18 m["height"] = 180 m["data"] = []string{"Go", "Python", "PHP"} // 打印映射 fmt.Println(m) //转json result, _ := json.Marshal(m) //打印转的json 要使用string() fmt.Println(string(result)) //格式化 json resultfmt, _ := json.MarshalIndent(m, "", " ") //打印转的json 要使用string() fmt.Println(string(resultfmt)) } 结果: map[age:18 data:[Go Python PHP] height:180 name:Pony] {"age":18,"data":["Go","Python","PHP"],"height":180,"name":"Pony"} { "age": 18, "data": [ "Go", "Python", "PHP" ], "height": 180, "name": "Pony" } ``` ### 使用结构体快速编码 ``` package main import ( "encoding/json" "fmt" ) // 创建一个结构体 里面是json的键位 type Per struct { // Name属性的key值转为 name Name string `json:"name"` Age int `json:"age"` Height int `json:"height"` Data []string `json:"data"` // 这种数组 或者切片 类型前加[] } func main() { // 定义一个结构体变量 per := Per{"Pony", 18, 170, []string{"Go", "Python", "PHP"}} //转成json 输出 //result, err := json.Marshal(per) result, err := json.MarshalIndent(per, "", " ") fmt.Println(string(result)) if err != nil { fmt.Println(err) } } 结果: { "name": "Pony", "age": 18, "height": 170, "data": [ "Go", "Python", "PHP" ] } ``` ### 解码json > func Unmarshal(data []byte, v interface{}) error > data []byte 这块[]byte(json字符串) > v interface{} 指针类型 ``` package main import ( "encoding/json" "fmt" ) // 创建一个结构体 里面是json的键位 type Per struct { Name string `json:"name"` Age int `json:"age"` Height int `json:"height"` Data []string `json:"data"` // 这种数组 或者切片 类型前加[] } func main() { // `` 通常用这个符号直接输出 jsonstr := `{ "name": "Pony", "age": 18, "height": 170, "data": [ "Go", "Python", "PHP" ] }` // 实例化结构体 // per := new(Per) 返回指针类型 var per Per // 返回映射 err := json.Unmarshal([]byte(jsonstr), &per) if err != nil { fmt.Println(err) } fmt.Println(per) } 结果: {Pony 18 170 [Go Python PHP]} ```