golang json 编码解码

golang json 编码解码,第1张

概述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

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 编码解码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1270478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存