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

如何使用jq为JSON数组对象添加来自脚本的size字段值

用jq将脚本输出的数值批量更新到JSON数组中

现有原始JSON数组:

[
    {
        "id": "1"
    }, 
    {
        "id": "2"
    }, 
    {
        "id": "3"
    } 
]

执行sizes.sh脚本后得到每行一个数值的输出:

10
20
30

要把这些数值依次作为size字段添加到JSON数组的对应对象中,最终得到如下结构:

[
    {
        "id": "1",
        "size": 10
    }, 
    {
        "id": "2",
        "size": 20
    }, 
    {
        "id": "3",
        "size": 30
    }
]

解决方案

可以用以下命令实现:

./sizes.sh | jq -n --argfile json original.json '
  $json as $arr
  | [inputs] | map(tonumber) as $sizes
  | $arr | zip($sizes) | map(.[0] + {size: .[1]})
'

命令说明

  1. ./sizes.sh |:将脚本的输出内容传递给jq处理
  2. -n:让jq不自动读取标准输入,而是通过inputs手动捕获脚本输出
  3. --argfile json original.json:把原始JSON文件加载到变量$arr中
  4. [inputs] | map(tonumber) as $sizes:将脚本输出的每行文本转换为数值,组成一个数值数组
  5. $arr | zip($sizes):将原始JSON数组和数值数组按索引位置一一配对
  6. map(.[0] + {size: .[1]}):给每个原始JSON对象添加对应的size字段,最终组合成目标数组

注意事项

  • 确保sizes.sh输出的行数和原始JSON数组的元素数量完全一致,否则会出现字段缺失或值为null的情况
  • 若需要size字段保留字符串类型,可去掉map(tonumber)部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:07:11