golang json 编码解码
发布时间:2020-12-16 09:35:16 所属栏目:大数据 来源:网络整理
导读:json 编码 package mainimport ("encoding/json""fmt")type Person struct {Name string `json:"name"`Age int `json:"age"`}func main() {person := Person{"ruby",24}b,err := json.Marshal(person)if err == nil {fmt.Printf("%sn",b)} else {// 错误处
json 编码 package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { person := Person{"ruby",24} b,err := json.Marshal(&person) if err == nil { fmt.Printf("%sn",b) } else { // 错误处理 } }
关键方法 json.Marshal: func Marshal(v interface{}) ([]byte,error) ? 这个方法返回的结果是一个字节数组,如果需要转字符串,可以 string(xxx),如: fmt.Println(string(b))
json 解码 package main import ( "encoding/json" "strings" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { // 需要解码的 json 字符串 str := ` {"name":"ruby","age":24} ` // json decoder 对象,有个 Decode 方法,接受一个 struct 参数 decoder := json.NewDecoder(strings.NewReader(str)) var person Person err := decoder.Decode(&person) if err == nil { fmt.Println(person.Name) fmt.Println(person.Age) } }
写成一行就是(str 是需要解码的字符串,v 是结构体变量,需要解码成什么 struct 就定义什么 struct 变量): json.NewDecoder(strings.NewReader(str)).Decode(v) ?
常见问题: 1、为什么我定义了一个 struct,但是使用 json.Marshal 方法编码之后返回的是空的 byte[] ? 可能原因:struct 里面使用了小写的的字段名,如 type Person struct { name string age int } 需要把 字段名转为 驼峰命名,如果需要编码之后的字段名是小写的,可以给 struct 加个 tag,如上面的例子那样 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |