如何使用jq从JSON的Results数组中提取指定key生成合法对象数组
jq过滤JSON指定key并输出数组格式解决方案
问题原因
原命令输出独立无逗号分隔对象的核心原因是:使用.[]将Results数组展开为了独立的JSON对象流,jq默认会逐行输出每个流元素,因此不会有外层数组包裹,对象之间也不会自动添加逗号。
修复方案
方案1:基于原有命令修改
只需把对每个数组元素的处理逻辑用方括号[]包裹,即可将处理后的所有对象重新组装为数组输出:
jq '.Results | [.[] | with_entries(select([.key] | inside(["key","key2", "key3"])))]' input.json
方案2:更简洁的写法(推荐)
如果你明确知道需要保留的key名称,无需使用with_entries做过滤,直接用map加对象构造语法即可,可读性更高:
jq '.Results | map({key, key2, key3})' input.json
直接将示例中的key、key2、key3替换为你实际需要提取的key名称即可。
内容的提问来源于stack exchange,提问作者Taavi Ansper
相关产品推荐
相关产品推荐

