如何使用jq更新JSON数组中的每个对象并添加URL字段
解决方法
你的命令存在语法冗余和shell引号转义问题,以下是两种正确实现方式:
方式一:遍历数组元素并更新
使用|=操作符遍历数组每个对象,直接合并新增的url字段:
jq '.[] |= . + {url: "http://" + .host + .path}' input.json
如果是通过管道传递JSON内容,可写成:
cat input.json | jq '.[] |= . + {url: "http://" + .host + .path}'
方式二:使用map函数处理数组
通过map函数对数组中每个对象进行转换:
jq 'map(. + {url: "http://" + .host + .path})' input.json
命令说明
.[]/map():负责遍历数组中的每一个对象. + {url: ...}:将原对象与包含url字段的新对象合并,其中"http://" + .host + .path完成字符串拼接,生成完整URL- 用单引号包裹jq表达式可以避免shell环境下的双引号转义问题,减少语法错误
执行上述命令后,就能得到你需要的JSON结果。
内容的提问来源于stack exchange,提问作者ntriisii
相关产品推荐
相关产品推荐

