如何使用JQ为JSON数组每个对象新增键并复制start键值到date键
JQ 批量为数组对象新增字段方案
可直接使用的命令
要保留原数组结构、同时新增两个目标字段,执行以下命令即可:
jq 'map(. + {"dimension": "new", "date": .start})' input.json
如果偏好更新运算符写法,也可以用等价命令:
jq '.[] |= . + {"dimension": "new", "date": .start}' input.json
写法说明
- 你原有命令的问题:一是仅新增了
dimension字段,未定义date字段的赋值规则;二是直接使用.[] +=会将数组拆分为多个独立对象输出,丢失外层数组包裹结构 - 遍历单个数组对象的上下文中,
.start代表当前对象下start字段的值,直接赋值给date即可完成值复制 dimension字段直接写入固定值"new"即可
执行上述命令后,输出结果和你给出的预期结构完全匹配。
内容的提问来源于stack exchange,提问作者Richard C
相关产品推荐
相关产品推荐

