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

如何用jq提取JSON内部数组元素生成简化结构?

解决jq提取JSON数组元素的问题

问题1:提取field1数组的第一个元素并保留原结构

你用select(.field1[0])返回原JSON是因为select是用来过滤整个JSON对象的——只要.field1[0]存在(非空/非假),就会完整保留原对象,而不会修改field1数组的内容。

要生成和原结构一致但仅保留field1第一个元素的JSON,需要直接修改field1字段的值,把它替换成只包含第一个元素的数组:

jq '.field1 = [.field1[0]]' tmp.json

这个命令的逻辑是:取出原field1的第一个元素,把它放进新数组,再赋值给原field1字段,其他结构保持不变。

问题2:提取field1中a=="F1A1"和a=="F1A4"的元素

同样要保持原结构,需要用map过滤field1数组中的元素,再替换原字段:

jq '.field1 = (.field1 | map(select(.a == "F1A1" or .a == "F1A4")))' tmp.json
  • map(...)会遍历field1数组的每个元素
  • select(.a == "F1A1" or .a == "F1A4")筛选出符合条件的元素
  • 最后把过滤后的数组重新赋值给field1,其他结构不受影响

如果你的JSON里field1可能为空数组,这个命令也能正常处理,返回空的field1数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:51