Go语言通过encoding/json包实现JSON编解码,使用json.Marshal将结构体转为JSON,需字段导出并可用json标签自定义键名;json.Unmarshal则解析JSON到变量,需传指针;支持map[string]interface{}处理动态结构,配合omitempty可忽略空值,注意类型断言与时间格式处理。
Go语言通过标准库encoding/json提供对JSON的编码和解码支持,使用简单且高效。处理结构体与JSON之间的转换时,主要依赖json.Marshal和json.Unmarshal两个函数。
使用json.Marshal可将Go结构体或map转换为JSON格式的字节切片。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Alice", Age: 30}
data, err := json.Marshal(p)
if err != nil {
fmt.Println("编码失败:", err)
return
}
fmt.Println(string(data)) // 输出: {"name":"Alice","age":30}
}
结构体字段需以大写字母开头(导出),否则无法被序列化。通过json:标签可自定义JSON中的字段名。
使用json.Unmarshal将JSON数据解析到Go变量中。
func main() {
jsonData :=
`{"name":"Bob","age":25}`
var p Person
err := json.Unmarshal([]byte(jsonData), &p)
if err != nil {
fmt.Println("解码失败:", err)
return
}
fmt.Printf("%+v\n", p) // 输出: {Name:Bob Age:25}
}
目标变量需传入指针,确保数据能写入。若JSON字段在结构体中不存在,会被忽略;若缺少字段,则对应字段保持零值。
当结构不固定时,可用map[string]interface{}或interface{}接收数据。
func main() {
jsonData := `{"id":1,"info":{"name":"Tom","active":true}}`
var data map[string]interface{}
json.Unmarshal([]byte(jsonData), &data)
fmt.Println(data["id"]) // 1
fmt.Println(data["info"].(map[string]interface{})["name"]) // Tom
}
注意类型断言的使用,避免运行时panic。也可结合json.RawMessage延迟解析部分字段。
json:"name,omitempty"表示该字段为空值时不会输出到JSON中,常用于指针、切片、零值字段time.Time和特定格式标签,如json:"created_at,string"
json.NewEncoder(os.Stdout).SetEscapeHTML(false)
基本上就这些。掌握Marshal和Unmarshal的使用,加上合理的结构体标签,就能高效处理大多数JSON场景。不复杂但容易忽略细节,比如字段导出和类型匹配问题。
# html
# js
# json
# go
# golang
# go语言
# 编码
# 字节
# ai
# 标准库
# String
# 结构体
# 指针
# Interface
相关文章:
网站制作公司排行榜,抖音怎样做个人官方网站
东莞专业制作网站的公司,东莞大学生网的网址是什么?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何在建站主机中优化服务器配置?
C#怎么创建控制台应用 C# Console App项目创建方法
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何破解联通资金短缺导致的基站建设难题?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
建站之星后台管理如何实现高效配置?
行程制作网站有哪些,第三方机票电子行程单怎么开?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
如何选择服务器才能高效搭建专属网站?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
香港服务器如何优化才能显著提升网站加载速度?
C#如何在一个XML文件中查找并替换文本内容
如何通过万网虚拟主机快速搭建网站?
Android自定义listview布局实现上拉加载下拉刷新功能
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何快速上传建站程序避免常见错误?
如何获取上海专业网站定制建站电话?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
建站之星如何取消后台验证码生成?
如何通过可视化优化提升建站效果?
高端建站三要素:定制模板、企业官网与响应式设计优化
建站之星代理如何获取技术支持?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
ui设计制作网站有哪些,手机UI设计网址吗?
上海网站制作开发公司,上海买房比较好的网站有哪些?
c# 服务器GC和工作站GC的区别和设置
建站之星会员如何解锁更多建站功能?
太原网站制作公司有哪些,网约车营运证查询官网?
如何用PHP快速搭建CMS系统?
济南企业网站制作公司,济南社保单位网上缴费步骤?
建站之星多图banner生成与模板自定义指南
阿里云网站制作公司,阿里云快速搭建网站好用吗?
在线制作视频的网站有哪些,电脑如何制作视频短片?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站之星如何优化SEO以实现高效排名?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。