分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

golang json 编码解码

发布时间:2023-09-06 02:00责任编辑:蔡小小关键词:jsjson

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 Personerr := 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 编码解码

原文地址:https://www.cnblogs.com/eleven24/p/9192481.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved