You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JQ诊断:获取带数据类型的JSON全路径

用JQ获取JSON所有标量路径及对应数据类型

你可以通过修改现有脚本,结合getpath(.)和type操作,同时生成路径字符串与对应值的类型,最终输出目标格式的结果。

修改后的JQ脚本

paths(scalars)
| (
    map(if type == "number" then "[]" else tostring end)
    | join(".")
) as $path
| { ($path): (getpath(.) | type) }
| unique

脚本说明

  1. 生成标量路径:paths(scalars)会遍历JSON中所有标量值(字符串、数字、布尔值等),返回每个值对应的路径数组,例如["items", 0, "_maintainer", "value"]。
  2. 转换路径为目标格式:遍历路径数组的每个元素,将数组索引(数字类型)替换为[],其余元素转为字符串后用.拼接,得到如items.[]._maintainer.value的路径字符串。
  3. 获取数据类型:用getpath(.)根据当前路径取出对应的值,再通过type获取其数据类型(string/number/boolean等)。
  4. 生成键值对对象:通过{ ($path): ... }将路径字符串作为键、类型作为值,生成单个对象。
  5. 去重:unique确保数组中不会出现重复的路径-类型对象(比如数组内多个元素的相同结构路径)。

示例输出

用你提供的JSON测试该脚本,会得到如下结果:

[
  { "_links.self.href": "string" },
  { "_links.self.type": "string" },
  { "items.[]._links.parent.href": "string" },
  { "items.[]._links.parent.type": "string" },
  { "items.[]._links.self.href": "string" },
  { "items.[]._links.self.type": "string" },
  { "items.[]._maintainer._id": "number" },
  { "items.[]._maintainer.email": "string" },
  { "items.[]._maintainer.value": "boolean" },
  { "totalCount": "number" }
]

内容的提问来源于stack exchange,提问作者Jeremys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:50:25