Go语言JSON解析器gjson使用方法详解
gjson
GJSON
是一个Go
包,它提供了一种从json
文档中获取值的快速简单的方法。它具有单行检索、点符号路径、迭代和解析 json 行等功能。
还可以查看SJSON
以修改 json
,以及JJ
命令行工具。
本自述文件是如何使用 GJSON
的快速概述,有关更多信息,请查看GJSON
语法。
github 的地址在这里。
安装
安装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"
您还可以使用 查询数组中的第一个匹配项#(…),或使用 查找所有匹配项#(…)#。查询支持==, !=, <, <=, >,>= 比较运算符和简单的模式匹配%(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使用方法详解的文章就介绍到这了,更多相关Go JSON解析器gjson内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Go语言之io.ReadAtLeast函数的基本使用和原理解析
io.ReadAtLeast函数是Go语言标准库提供的一个工具函数,能够从数据源读取至少指定数量的字节数据到缓冲区中,这篇文章主要介绍了io.ReadAtLeast函数的相关知识,需要的朋友可以参考下2023-07-07
最新评论