Ksh*_*rma 3 json parent-child jq
考虑以下 json:
{
a: {
b: {
c: 1,
d: 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何将 b 的所有属性移至父级 a 下:
{
a: {
c: 1,
d: 2,
b: {}
}
}
Run Code Online (Sandbox Code Playgroud)
对于这种特殊情况,您可以这样做:
$ jq '.a |= (.b = {}) + .b' input.json
Run Code Online (Sandbox Code Playgroud)
在这里,我们a用原始内容更新对象,并将其b替换为空对象,并将其与原始内容组合b。
如果这太难以推理,那么这可能更容易理解:
$ jq '.a |=
with_entries(if .key == "b"
then (.value = {}), (.value | to_entries[])
else .
end)' input.json
Run Code Online (Sandbox Code Playgroud)