1、结构体
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int64
Height float64
Weight float64
}
func main() {
user := User{
Name: "小花",
Age: 18,
Height: 162,
Weight: 42,
}
// struct--转-->json string
str_json, err := (user)
if err != nil {
(" failed, err:%v\n", err)
return
}
("str_json:%s\n", str_json)
// json string--转-->struct
var struct_user User
err = (str_json, &struct_user)
if err != nil {
(" failed, err:%v\n", err)
return
}
("struct_user:%#v\n", struct_user)
}
// 打印结果
str_json:{"Name":"小花","Age":18,"Height":162,"Weight":42}
struct_user:{Name:"小花", Age:18, Height:162, Weight:42}
2、字典
package main
import (
"encoding/json"
"fmt"
)
func main() {
var m = make(map[string]interface{}, 1)
("打印字典: %v\n", m)
m["count"] = 1 // int
("打印字典: %v\n", m)
// map --转--> json string
b, err := (m)
if err != nil {
("marshal failed, err:%v\n", err)
}
// 转换后的结果为字节组,str_byte:[]byte{0x7b, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x31, 0x7d}
("str_byte: %#v\n", b)
// string()函数:将字节转换成字符串
// 打印结果:str:"{\"count\":1}"
("str: %#v\n", string(b))
// json string -> map[string]interface{}
var m2 map[string]interface{}
err = (b, &m2)
// 结果:map字典: map[count:1]
("map字典: %v\n", m2) // 1
if err != nil {
("unmarshal failed, err:%v\n", err)
return
}
// 结果:count值:1
("count值:%v\n", m2["count"]) // 1
("type:%T\n", m2["count"]) // float64
}