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

使用jq按key查询JSON时如何原生保留父级key输出

jq查询JSON时保留目标父级key的原生实现方案

jq本身原生支持该需求,核心是使用其内置的对象构造语法实现,不需要手动拼接字符串。

针对当前场景的直接实现

你要输出包含popup作为父key的结果,直接执行以下命令即可:

jq '{"popup": .menu.popup}' test.json

执行后的输出就是你期望的格式:

{
  "popup": {
    "menuitem": [
      {
        "value": "New",
        "onclick": "CreateNewDoc()"
      },
      {
        "value": "Open",
        "onclick": "OpenDoc()"
      },
      {
        "value": "Close",
        "onclick": "CloseDoc()"
      }
    ]
  }
}

更简化的通用写法

如果你的查询路径最后一级的key名和你要输出的key名一致,可以用jq的简写语法,不需要重复写值路径:

jq '.menu | {popup}' test.json

这个写法和上面的命令效果完全等价,{popup}是{"popup": .popup}的语法糖,适合提取同一父节点下的多个key的场景,比如你要同时提取menu下的id、value、popup三个字段并保留key名,直接写:

jq '.menu | {id, value, popup}' test.json

输出会自动保留三个key的结构:

{
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:36:03