利用Golang解析json数据的方法示例

发布时间 - 2026-01-11 02:32:18    点击率:

本文主要给大家介绍的是关于Golang解析json数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

使用 Golang 解析 json 数据,这种 json 格式是对象的数组,官方文档有一个示例:

var jsonBlob = []byte(`[ 
 {"Name": "Platypus", "Order": "Monotremata"}, 
 {"Name": "Quoll", "Order": "Dasyuromorphia"} 
]`) 
type Animal struct { 
 Name string 
 Order string 
} 
var animals []Animal 
err := json.Unmarshal(jsonBlob, &animals) 
if err != nil { 
 fmt.Println("error:", err) 
} 
fmt.Printf("%+v", animals)

它可以把 json 数据的对象解析到对应的结构体中。

如果是一维数组,带键值对的形式,如:{“A”:3,”B”:3,”C”:5,”D”:5},代码如下:

func main() {
 jsonData := []byte(`{"A":3,"B":3,"C":5,"D":5}`)
 var a map[string]int
 json.Unmarshal(jsonData, &a)
 fmt.Printf("%+v\n", a)
}

可见键值对形式的 json 可以映射到 map 中,或者 interface{} .

如果是只有值的形式,如:[“a”,”b”,”c”,”d”,”e”],代码如下:

func main() {
 jsonData := []byte(`["a","b","c","d","e"]`)
 var a []string
 json.Unmarshal(jsonData, &a)
 fmt.Printf("%+v\n", a)
}

可见只有值的形式可以映射到一个 slice 中。

关于 json 数据解析对于类型,在函数注释中都已有说明:

To unmarshal JSON into an interface value,Unmarshal stores one of these in the interface value:
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null

模拟 PHP 的 json_decode($jsonString, true) 函数

但是,看这种情况,在 PHP 中,如果用 json_decode(‘[“a”,”b”,”c”,”d”,”e”]', true) 这种第二个参数是 true 的解析 json,可以解析为带键值对的对象的形式:

[
 0=>"a",
 1=>"b",
 2=>"c",
 3=>"d",
 4=>"e"
]

这种 Golang 怎么做到呢?

func main() {
 jsonData := []byte(`["a","b","c","d","e"]`)
 var a []string
 json.Unmarshal(jsonData, &a)
 
 newData := make(map[int]string)
 for k, v := range a {
 newData[k] = v
 }
 
 fmt.Printf("%+v\n", newData)
}

应该没有内置函数,那就这样手动实现吧。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者使用Go语言能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# golang  # 解析json  # 解析json文件  # 解析复杂json  # 使用Go语言解析动态JSON格式的方法  # Golang实现解析JSON的三种方法总结  # Go语言实现JSON解析的方法详解  # GO中Json解析的几种方式  # Golang 如何解析和生成json  # golang生成JSON以及解析JSON  # Go语言实现动态解析JSON数据的多种方式  # 键值  # 的是  # 相关内容  # 那就  # 说了  # 已有  # 不多  # 第二个  # 给大家  # 这种情况  # 它可以  # 这篇文章  # 谢谢大家  # 中都  # 有一个  # 文档  # 有疑问  # type  # Animal  # Monotremata 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 免费视频制作网站,更新又快又好的免费电影网站?  javascript日期怎么处理_如何格式化输出  javascript中闭包概念与用法深入理解  如何快速搭建自助建站会员专属系统?  如何快速配置高效服务器建站软件?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel如何使用Sanctum进行API认证?(SPA实战)  详解Android中Activity的四大启动模式实验简述  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  音响网站制作视频教程,隆霸音响官方网站?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何快速辨别茅台真假?关键步骤解析  高防服务器租用指南:配置选择与快速部署攻略  Python制作简易注册登录系统  JavaScript如何操作视频_媒体API怎么控制播放  高防服务器:AI智能防御DDoS攻击与数据安全保障  千库网官网入口推荐 千库网设计创意平台入口  佛山企业网站制作公司有哪些,沟通100网上服务官网?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在景安服务器上快速搭建个人网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  iOS UIView常见属性方法小结  Laravel如何实现事件和监听器?(Event & Listener实战)  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何在建站之星网店版论坛获取技术支持?  Python图片处理进阶教程_Pillow滤镜与图像增强  lovemo网页版地址 lovemo官网手机登录  如何有效防御Web建站篡改攻击?  js实现获取鼠标当前的位置  Laravel如何处理表单验证?(Requests代码示例)  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  HTML 中如何正确使用模板变量为元素的 name 属性赋值  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel中的Facade(门面)到底是什么原理  5种Android数据存储方式汇总  原生JS获取元素集合的子元素宽度实例  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  bootstrap日历插件datetimepicker使用方法  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何在阿里云通过域名搭建网站?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】