这个问题是我之前问过的一个问题的扩展:在正确的部分添加 JSON 值
本质上,我有一个 json 文件“veggies.json”,如下所示:
{"plants":
{"veggies":
[
{"section":"TUBERS",
"values":
[
{"tuber":"potato","cookstyle":"fry"}
]
},
{"section":"LEGUMES",
"values":
[
{"legume":"beans","cookstyle":"boil"},
{"legume":"peanuts","cookstyle":"salted"}
]
}
]
}
}
我想添加另一个块茎“山药”,它可以有烹饪风格的“煮沸” - 这必须在 TUBERS 部分下,但独一无二。意思是,我只想在它不存在的情况下添加这个块茎 - 如果它已经存在,我只想用我传递的任何“cookstyle”替换它 - 它也可以是cookstyle:“mashed”。
从我之前的问题中,我已经有了使用“jq”工具的代码:
jq '(.plants.veggies[] | select(.section == "TUBERS") | .values) |= . + [{"cookstyle": "boil", "tuber": "yam"}]' veggies.json
但是,这行代码在 TUBERS 部分下多次添加同一行 - 有什么方法可以唯一添加它(类似哈希的行为)
非常感谢提前。