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

如何使用jq查找包含特定字符串的JSON键?

如何用jq查找包含特定字符串的JSON键?

我来帮你搞定这个问题!用jq处理JSON中包含特定字符串的键其实很灵活,下面结合你给出的示例JSON,分两种常见场景来演示:

首先先把你的示例JSON整理成完整可运行的格式:

{
  "orderTotal_1": {
    "fields": {
      "button": {
        "actionDialog": null,
        "actionUrl": null,
        "clicked": false,
        "enable": true,
        "text": "LANJUTKAN KE PEMBAYARAN",
        "textColor": null
      },
      "payment": {
        "pay": "Rp1.953.800",
        "taxTip": "Termasuk PPN, jika berlaku.",
        "title": "Total"
      },
      "timestamp": 1522355946093
    },
    "id": "1",
    "tag": "orderTotal",
    "type": "biz"
  },
  "rightContainer_10010": {
    "fields": {
      "css": {
        "backgroundColor": null,
        "floatPosition": "right",
        "marginTop": null,
        "width": "388px"
      }
    }
  }
}

场景1:只查找顶层键中包含特定字符串

比如你想找顶层键里包含orderTotal的项,直接用下面的命令就能筛选出键名:

jq 'keys[] | select(. | contains("orderTotal"))' your_file.json

运行后会输出:

"orderTotal_1"

要是你需要连带着键对应的完整值一起输出,调整一下命令就行:

jq 'to_entries[] | select(.key | contains("orderTotal")) | {key: .key, value: .value}' your_file.json

输出结果会是包含键值对的完整JSON结构:

{
  "key": "orderTotal_1",
  "value": {
    "fields": {
      "button": {
        "actionDialog": null,
        "actionUrl": null,
        "clicked": false,
        "enable": true,
        "text": "LANJUTKAN KE PEMBAYARAN",
        "textColor": null
      },
      "payment": {
        "pay": "Rp1.953.800",
        "taxTip": "Termasuk PPN, jika berlaku.",
        "title": "Total"
      },
      "timestamp": 1522355946093
    },
    "id": "1",
    "tag": "orderTotal",
    "type": "biz"
  }
}

场景2:递归查找所有层级的键中包含特定字符串

如果要找所有嵌套层级里的键(比如示例里的actionDialog、actionUrl这类),可以用递归遍历的方式。比如找包含action的所有键:

jq '.. | objects | keys[] | select(. | contains("action"))' your_file.json

这个命令的逻辑是:..递归遍历所有节点,objects只保留对象类型的节点,keys[]列出每个对象的键,最后用select筛选出包含目标字符串的键。运行后输出:

"actionDialog"
"actionUrl"

要是你还想知道这些键在JSON里的具体路径和对应的值,可以用这个进阶命令:

jq 'path(.. | objects | keys[] | select(. | contains("action")) as $k | .[$k]) as $p | {path: $p, key: $p[-1], value: getpath($p)}' your_file.json

输出会清晰展示每个匹配键的路径、键名和对应值:

{
  "path": [
    "orderTotal_1",
    "fields",
    "button",
    "actionDialog"
  ],
  "key": "actionDialog",
  "value": null
}
{
  "path": [
    "orderTotal_1",
    "fields",
    "button",
    "actionUrl"
  ],
  "key": "actionUrl",
  "value": null
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:06:41