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

如何用JQ弹性处理嵌套JSON数组?提取值并调整指定键名

弹性处理Wikidata SPARQL结果的JQ方案

要实现无需硬编码多数键名的转换,同时完成code到iso的重命名,直接提取子对象的value值,可以用以下JQ表达式:

map(
  with_entries(
    .key |= if . == "code" then "iso" else . end |
    .value = .value.value
  )
)

表达式拆解:

  • map(...):遍历输入数组中的每一个对象,逐个处理
  • with_entries(...):把对象转换成键值对数组进行批量处理,处理完成后自动转回对象结构
  • .key |= if . == "code" then "iso" else . end:仅对code这个键做重命名,其他键保持原样
  • .value = .value.value:统一提取所有属性值里的value字段,替换掉原来带type和value的子对象

示例演示:

假设你的输入JSON是:

[
  {
    "countryName": {"type": "string", "value": "Japan"},
    "code": {"type": "string", "value": "JP"},
    "area": {"type": "number", "value": 377975}
  },
  {
    "countryName": {"type": "string", "value": "Canada"},
    "code": {"type": "string", "value": "CA"},
    "officialLanguage": {"type": "string", "value": "English"}
  }
]

执行JQ命令后输出:

[
  {
    "countryName": "Japan",
    "iso": "JP",
    "area": 377975
  },
  {
    "countryName": "Canada",
    "iso": "CA",
    "officialLanguage": "English"
  }
]

这个方案完全不需要硬编码除code外的任何键名,新增或修改其他属性时,JQ会自动处理,完美适配键名变更的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:21:02