JQ语句删除错误键:基于条件动态确定待删除目标
JQ语句修正:按条件删除指定键
原始JSON
{ "dog": { "alpha": "one", "gamma": "square" }, "square": { "circle": { "triangle": "sides3" } }, "sides3": "delete me" }
预期处理逻辑
- 如果
dog.beta存在:- 将
$new_key_a设为beta的值 - 删除与该值匹配的顶级键
- 将
- 否则如果
dog.gamma存在:- 将
$new_key_a设为.[gamma].circle.triangle的值(即示例中的sides3) - 删除顶级键
sides3
- 将
现有语句问题
当前使用的JQ语句无法正确获取嵌套值并执行删除操作:
first(.. | objects | select(.alpha? == "one") | if (.beta) then .beta else .gamma end) as $new_key_a | .[$new_key_a].circle.triangle
尝试用else [$gamma].circle.triangle会因变量未声明报错,且未实现删除目标键的核心逻辑。
修正后的JQ语句
# 先确定要删除的目标键 (if .dog.beta then .dog.beta else .dog.gamma as $g | .[$g].circle.triangle end) as $key_to_delete # 删除指定的顶级键 | del(.[$key_to_delete])
预期输出
{ "dog": { "alpha": "one", "gamma": "square" }, "square": { "circle": { "triangle": "sides3" } } }
内容的提问来源于stack exchange,提问作者art vanderlay
相关产品推荐
相关产品推荐

