如何用jq为JSON嵌套对象添加默认值并去除嵌套数组重复项?
用JQ实现JSON字段保留+items补默认值+去重
直接用这条JQ命令就能搞定,既能保留原JSON的所有字段,又能完成你要的两项操作:
.items |= (map(.version //= "NA") | unique_by(.name))
命令拆解:
.items |= ...:只对顶级的items数组做修改,其他字段原封不动保留map(.version //= "NA"):遍历items里的每个对象,要是某个对象缺version字段,就自动补上"NA"unique_by(.name):按name字段去重,数组里第一个出现的同名对象会被保留,后续重复的直接剔除
示例演示:
假设原JSON是这样:
{ "id": "123", "type": "collection", "items": [ {"name": "toolA", "version": "1.0"}, {"name": "toolB"}, {"name": "toolA", "version": "2.0"} ] }
执行命令后得到的结果:
{ "id": "123", "type": "collection", "items": [ {"name": "toolA", "version": "1.0"}, {"name": "toolB", "version": "NA"} ] }
内容的提问来源于stack exchange,提问作者Vijay Kumar
相关产品推荐
相关产品推荐

