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

如何用jq提取JSON数组单个元素并保留原数组结构?

解决方案

你现有写法的问题是|= .[$i]直接将数组的第$i项元素赋值给了对应顶级键,自然会丢失数组外层结构。只需将提取到的元素重新包裹为数组即可实现需求。

修改后的jq命令

jq --argjson i "$i" '.[] |= [.[$i]]' "$1"

说明

  • 新增的方括号[]会把提取到的单个对象包装为单元素数组,最终输出的dog字段就会保留数组结构
  • 原有命令里的-r参数是用来输出原始纯文本的,如果你要保存的是合法JSON文件,不需要加-r参数,避免输出格式异常
  • 如果你的场景里只需要修改dog字段、不需要处理其他顶级键,也可以用更精准的写法:
    jq --argjson i "$i" '.dog = [.dog[$i]]' "$1"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:54:03