如何用jq过滤JSON子节点,仅保留含非空dependencies的条目
使用jq过滤保留非空依赖的条目
直接用这条jq命令就能实现你的需求:
jq '.dev |= with_entries(select(.value.dependencies | length > 0) | .value = {dependencies: .value.dependencies})' input.json
命令拆解:
.dev |= ...:针对顶层的dev对象进行修改,把处理后的结果替换原dev字段with_entries(...):遍历dev下的每个键值对(比如Alpha、Beta这些条目)select(.value.dependencies | length > 0):只保留满足两个条件的条目:- 条目包含
dependencies字段 dependencies是非空数组(长度大于0)
这样Beta(无dependencies)、Delta(dependencies为空)都会被过滤掉
- 条目包含
.value = {dependencies: .value.dependencies}:把筛选后的条目只保留dependencies字段,自动丢弃其他未知字段(比如Alpha的other_value_1、other_value_n)
验证效果:
把你的输入JSON存为input.json,执行上面的命令,输出就是你想要的结果:
{ "dev": { "Alpha": { "dependencies": [ "Gamma", "Delta" ] }, "Gamma": { "dependencies": [ "Delta" ] } } }
内容的提问来源于stack exchange,提问作者Naan
相关产品推荐
相关产品推荐

