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("%s\n",b) } else { // 错误处理 }}
关键方法 Json.Marshal:
func Marshal(v interface{}) ([]byte,error)
这个方法返回的结果是一个字节数组,如果需要转字符串,可以 string(xxx),如:
fmt.Println(string(b))
Json 解码
package mainimport ( "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,如上面的例子那样
总结以上是内存溢出为你收集整理的golang json 编码解码全部内容,希望文章能够帮你解决golang json 编码解码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)