假设我有这个 JSON:
{
"lunch": {
"time": "11 am",
"food": {
"is_pizza": true
}
},
"snacks": [
{
"time": "2 pm",
"food": {
"is_pizza": true
}
},
{
"time": "3:30 pm",
"food": {
"is_pizza": true
}
}
],
"dinner": {
"time": "6 pm",
"food": {
"is_pizza": true
}
}
}
现在我想遍历并且无论哪里我看到
"food"
对象,添加相同的键值对:
{
"lunch": {
"time": "11 am",
"food": {
"is_pizza": true,
"extra_cheese": true
}
},
"snacks": [
{
"time": "2 pm",
"food": {
"is_pizza": true,
"extra_cheese": true
}
},
{
"time": "3:30 pm",
"food": {
"is_pizza": true,
"extra_cheese": true
}
}
],
"dinner": {
"time": "6 pm",
"food": {
"is_pizza": true,
"extra_cheese": true
}
}
}
我怎样才能在
jq
中做到这一点?
以下是如何使用 jq 命令行工具执行此操作
cat input.json | jq '. | walk(if type == "object" and has("food") then .food += {"extra_cheese": true} else . end)'