如何使用JQ将父对象的account_id属性插入到子实例对象并展平实例列表
用jq展平JSON并为子对象添加父级account_id
你的思路完全正确!你写的jq命令已经完美实现了需求,咱们来详细拆解下它的工作逻辑,同时也可以给你一个更简洁的版本:
你的原始命令(有效且正确)
jq '.|map(.instances[]+{"account_id": .account_id})' file.json
命令拆解(一步步看它做了什么)
.:定位到整个输入的JSON数组(其实这步可以省略,因为map默认就作用在顶层数组上)map(...):遍历数组里的每一个账户对象.instances[]:把当前账户的instances数组展开,取出里面的每一个独立实例对象+{"account_id": .account_id}:将当前账户的account_id属性合并到每个展开后的实例对象中,完成属性注入
简化版命令(效果完全一致)
可以去掉多余的.|,让命令更简洁:
jq 'map(.instances[] + {account_id: .account_id})' file.json
输入输出示例
输入JSON(file.json内容)
[ { "account_id": 123, "instances": [ {"id": 1}, {"id": 2} ] }, { "account_id": 456, "instances": [ {"id": 1} ] } ]
输出结果
[ {"id": 1, "account_id": 123}, {"id": 2, "account_id": 123}, {"id": 1, "account_id": 456} ]
内容的提问来源于stack exchange,提问作者Ferman
相关产品推荐
相关产品推荐

