欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > go使用gjson操作json数据

go使用gjson操作json数据

2025/9/6 10:40:39 来源:https://blog.csdn.net/weixin_44534057/article/details/140609757  浏览:    关键词:go使用gjson操作json数据

gjson使用

  • gjson介绍
  • 安装gjson库
  • 解析 JSON 字符串
  • 路径语法
  • 复杂查询
  • 遍历和修改
  • 结论

gjson介绍

gjson 是一个 Go 语言库,用于快速解析 JSON 数据。它提供了非常简洁的 API 来查询 JSON 数据,无需预先定义 Go 结构体或映射(map)来匹配 JSON 结构。这使得 gjson 成为处理动态或未知结构的 JSON 数据的理想选择。

安装gjson库

go get -u github.com/tidwall/gjson

解析 JSON 字符串

package main  import (  "fmt"  "github.com/tidwall/gjson"  
)  func main() {  jsonString := `{"name":"Jason", "age":34, "city":"南京", "address":"紫东创意园"}`  // 获取 "name" 字段的值  name := gjson.Get(jsonString, "name").String()  fmt.Println("Name:", name)  // 获取 "age" 字段的值  age := gjson.Get(jsonString, "age").Int()  fmt.Println("Age:", age)// 获取 "address" 字段的值  address := gjson.Get(jsonString, "address").String()  fmt.Println("Address:", address)  // 尝试获取不存在的字段,并处理结果  nonExist := gjson.Get(jsonString, "non_exist").String()  if nonExist == "" {  fmt.Println("Non-exist field is empty or not found.")  }  // 处理数组jsonArray := `{"fruits":["apple","banana","cherry"]}`  firstFruit := gjson.Get(jsonArray, "fruits.0").String()  fmt.Println("First Fruit:", firstFruit)  
}

路径语法

gjson 使用类似 XPath 的语法来查询 JSON 数据。一些基本的路径示例包括:
.name:访问顶层对象的 name 字段。
.store.book[0].title:访问 store 对象中 book 数组的第一个元素的 title 字段。
#.name:在 JSON 对象的任何层级中搜索 name 字段的第一个匹配项(使用 # 表示递归搜索)。

复杂查询

gjson 还支持更复杂的查询,如使用 | 操作符进行多路径查询,或使用 @this 引用当前节点等。

遍历和修改

需要注意的是,gjson 主要用于查询和解析 JSON 数据,而不是用于修改 JSON 数据。如果你需要修改 JSON 数据,你可能需要将 gjson 解析的结果转换为 Go 的结构体或映射(map),进行修改后再转换回 JSON 字符串。

结论

gjson 是一个强大且灵活的库,用于在 Go 程序中快速解析和查询 JSON 数据。它的简洁 API 和高效的性能使其成为处理 JSON 数据的理想选择,特别是当处理的数据结构未知或动态时。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词