首页 > 其他分享 >gjson

gjson

时间:2023-11-08 10:11:33浏览次数:38  
标签:遍历 gjson 元素 通配符 JSON 数组

1. 通配符 ‘#’

1.1 例子

gjson 中,井号 # 是一个通配符,用于匹配JSON数组中的所有元素。在你的查询中,# 用于匹配 NetworkAdapterComplexes 数组中的每个元素,然后继续沿着JSON结构的路径。

让我们解释你的查询的各个部分:

  • NetworkAdapterComplexes.#: 这部分使用 # 通配符,匹配 NetworkAdapterComplexes 数组中的所有元素。

  • NetworkAdapter.Controllers.0.Links.PCIeDevices.#: 在每个 NetworkAdapterComplexes 元素中,这一部分继续沿着路径,匹配 NetworkAdapter 中的 Controllers 数组的第一个元素,然后匹配 Links 中的 PCIeDevices 数组中的所有元素。

  • @odata.id: 最后,这部分用于提取每个匹配元素中的 @odata.id 字段的值。

所以,整个查询的含义是匹配所有 NetworkAdapterComplexes 元素中第一个 Controllers 元素的 PCIeDevices 数组中的所有 @odata.id 值。

通配符 # 用于简化从JSON数组中提取数据的操作,因为它可以匹配数组中的所有元素而无需知道数组的确切长度。

1.2 在gjson查询数据时,什么时候可以使用通配符‘#’

gjson 查询数据时,通配符 # 用于匹配JSON中的数组的所有元素。你可以使用 # 通配符的情况包括但不限于以下情况:

  1. 提取数组中的所有元素的特定字段值:你可以使用 # 通配符来提取JSON数组中所有元素的特定字段的值。例如,提取所有用户的姓名:

    gjson.Get(jsonData, "users.#.name")
  2. 遍历数组中的元素:你可以使用 # 通配符来遍历JSON数组中的元素,并执行一些操作或条件检查。例如,遍历所有订单并执行某些操作:

    result := gjson.Get(jsonData, "orders.#") result.ForEach(func(key, value gjson.Result) bool { // 在这里执行操作,value 包含了当前元素的值 return true // 返回 true 继续遍历,或返回 false 停止遍历 })
  3. 深度遍历JSON结构中的数组:当JSON结构嵌套多层并包含多个数组时,你可以使用 # 通配符来深度遍历嵌套的数组。例如,深度遍历订单中的商品列表:

    result := gjson.Get(jsonData, "orders.#.products.#") result.ForEach(func(key, value gjson.Result) bool { // 在这里执行操作,value 包含了当前商品的值 return true })
  4. 匹配多个嵌套数组中的元素:当你需要从多个嵌套的数组中提取数据时,可以使用 # 通配符多次匹配不同的数组。例如,从用户评论中提取所有用户的所有标签:

    gjson.Get(jsonData, "comments.#.tags.#.label")

总之,# 通配符在 gjson 中非常有用,可以简化提取和遍历JSON数据中的数组元素的操作。它允许你处理未知数组长度和嵌套结构的数据,同时保持查询的灵活性。

标签:遍历,gjson,元素,通配符,JSON,数组
From: https://www.cnblogs.com/cqx6388/p/17816714.html

相关文章

  • Go每日一库之24:gjson
    简介之前我们介绍过gojsonq,可以方便地从一个JSON串中读取值。同时它也支持各种查询、汇总统计等功能。今天我们再介绍一个类似的库gjson。在上一篇文章Go每日一库之buntdb中我们介绍过JSON索引,内部实现其实就是使用gjson这个库。gjson实际上是get+json的缩写,用于读取JSO......
  • gjson - Golang 解析 JSON
    文章目录简介主要类型TypeResult方法gjsonresultPath修饰符示例介绍自定义备用简介Github地址go安装:goget-ugithub.com/tidwall/gjson主要类型Type说明说明:解析的数据类型(实际是int类型)功能:用于解析和输出时做判断包括:-True-False-String-JSON-Number......
  • GJSON的使用
    GJSON的使用 简介什么是Gjson:GJSON是一个Golang包,它提供了一种快速,简单的方法来从json格式文档中获取值。它拥有比如单行检索,用"."符号来寻找路径......