温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go语言JSON解析器gjson如何使用

发布时间:2022-12-07 09:41:31 来源:亿速云 阅读:119 作者:iii 栏目:开发技术

今天小编给大家分享一下Go语言JSON解析器gjson如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

gjson

GJSON 是一个Go包,它提供了一种从json文档中获取值的快速简单的方法。它具有单行检索、点符号路径、迭代和解析 json 行等功能。还可以查看SJSON以修改 json,以及JJ命令行工具。

安装

安装gjson,使用的是go传统的安装方法:

go install github.com/tidwall/gjson@latest

在文件的目录下执行:

$ go get -u github.com/tidwall/gjson

这样就在目录下,可以使用gjson了。

使用

获取相应的数值。

获取指定路径的搜索 json。路径采用点语法,例如“name.last”或“age”。当找到该值时,它会立即返回。

package main
import "github.com/tidwall/gjson"
const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}`
func main() {
	value := gjson.Get(json, "name.last")
	println(value.String())
}

这将打印:

Prichard

这个跟我们使用的传统的json解析还有一点区别,gjson不仅帮我们解析了json的数据,还帮我们建立了快速查找的通道。

路径语法

路径是由点分隔的一系列键。密钥可能包含特殊的通配符“*”和“?”。要访问数组值,请使用索引作为键。要获取数组中的元素数量或访问子路径,请使用“#”字符。点和通配符可以用“\”转义。

{
  "name": {"first": "Tom", "last": "Anderson"},
  "age":37,
  "children": ["Sara","Alex","Jack"],
  "fav.movie": "Deer Hunter",
  "friends": [
    {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
    {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
    {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
  ]
}

"name.last"          >> "Anderson"
"age"                >> 37
"children"           >> ["Sara","Alex","Jack"]
"children.#"         >> 3
"children.1"         >> "Alex"
"child*.2"           >> "Jack"
"c?ildren.0"         >> "Sara"
"fav\.movie"         >> "Deer Hunter"
"friends.#.first"    >> ["Dale","Roger","Jane"]
"friends.1.last"     >> "Craig"

您还可以使用 查询数组中的第一个匹配项#(&hellip;),或使用 查找所有匹配项#(&hellip;)#。查询支持==, !=, <, <=, >,>= 比较运算符和简单的模式匹配%(like) 和!% (not like) 运算符。

friends.#(last=="Murphy").first    >> "Dale"
friends.#(last=="Murphy")#.first   >> ["Dale","Jane"]
friends.#(age>45)#.last            >> ["Craig","Murphy"]
friends.#(first%"D*").last         >> "Murphy"
friends.#(first!%"D*").last        >> "Craig"
friends.#(nets.#(=="fb"))#.first   >> ["Dale","Roger"]

这样我们查找起来就非常方便了。

以上就是“Go语言JSON解析器gjson如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI