下面是“go语言搬砖之go jmespath实现查询json数据”的完整攻略:
什么是go jmespath
go jemspah是一个Go语言实现的JMESPath语法查询工具。JMESPath是一种用于描述如何从JSON文档中提取所需数据的查询语言。
安装go jmespath
在Go语言的环境下使用go get即可安装go jmespath:
go get github.com/jmespath/go-jmespath
查询语法
JMESPath查询语句的基础语法如下:
<基础表达式>.<属性名>[?<查询条件>]|[<索引>]|
例如,下面的JMESPath查询语句可以查询JSON数据中user属性的id属性:
user.id
示例1:查询json数组数据
以下是一个示例JSON数组数据:
[
{
"name": "张三",
"age": 23,
"gender": "男"
},
{
"name": "李四",
"age": 26,
"gender": "男"
}
]
我们可以使用go jmespath查询库来查询JSON数组数据中的单个或多个元素,例如,查询上面JSON数组数据中年龄大于25的人的名字,方法如下:
package main
import (
"fmt"
"github.com/jmespath/go-jmespath"
)
func main() {
jmespathString := "[]|[?age > `25`].name"
inputJSON := `[{"name":"张三","age":23,"gender":"男"},{"name":"李四","age":26,"gender":"男"},{"name":"王五","age":30,"gender":"女"}]`
parsedJSON, _ := jmespath.Search(jmespathString, inputJSON)
fmt.Println(parsedJSON)
}
运行上述代码即可得到查询结果:
["李四","王五"]
示例2:查询嵌套json数据
以下是一个示例嵌套JSON数据:
{
"users": [
{
"name": "张三",
"age": 23,
"gender": "男",
"address": {
"province": "北京市",
"city": "北京市"
}
},
{
"name": "李四",
"age": 26,
"gender": "男",
"address": {
"province": "广东省",
"city": "深圳市"
}
}
]
}
我们可以使用go jmespath查询库来查询JSON数组数据中的单个或多个元素,例如,查询上面JSON数组数据中地址在北京市的人的名字,方法如下:
package main
import (
"fmt"
"github.com/jmespath/go-jmespath"
)
func main() {
jmespathString := ".users[?address.province == `北京市`].name"
inputJSON := `{"users":[{"name":"张三","age":23,"gender":"男","address":{"province":"北京市","city":"北京市"}},{"name":"李四","age":26,"gender":"男","address":{"province":"广东省","city":"深圳市"}}]}`
parsedJSON, _ := jmespath.Search(jmespathString, inputJSON)
fmt.Println(parsedJSON)
}
运行上述代码即可得到查询结果:
["张三"]
以上是关于“go语言搬砖之go jmespath实现查询json数据”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:go语言搬砖之go jmespath实现查询json数据 - Python技术站