我有以下输入文件:
{
"dic": {
"a": "",
"b": "",
"c": "",
"d": ""
},
"remove": {
"b": true,
"c": false,
"d": true
}
}
Run Code Online (Sandbox Code Playgroud)
我想用 jq 删除字典中的所有元素,这些元素dic也在字典中remove,值为 true。
这将是输出:
{
"dic": {
"a": "",
"c": ""
},
"remove": {
"b": true,
"c": false,
"d": true
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做。我首先需要清理removedic 并只获取值为 true 的键。然后我需要以某种方式只从dic.
除了 JQ 之外,您不需要任何其他东西。
[.remove | path(.[] | select(.))] as $p | .dic |= delpaths($p)
Run Code Online (Sandbox Code Playgroud)
remove如果除了true和false之外可能还有其他值,请使用
select(. == true)
Run Code Online (Sandbox Code Playgroud)
代替
select(.)
Run Code Online (Sandbox Code Playgroud)