You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:23:16