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

如何使用JQ工具实现三种JSON数据修改场景?

使用JQ实现JSON中asset对象的统一修改需求

可以用一条JQ命令覆盖你提到的所有场景,无需区分asset是否存在或原有值是什么,直接确保最终asset对象包含house: true和colour: "orange",同时保留其他已有字段。

核心命令:

jq '.spec.asset |= (. // {}) + {"house": true, "colour": "orange"}' input.json

场景1:asset已存在且包含其他字段

原始输入:

{
    "name": "Paul",
    "country": "USA",
    "spec": {
        "asset": {
            "yard": true
        }
    }
}

执行命令后输出:

{
    "name": "Paul",
    "country": "USA",
    "spec": {
        "asset": {
            "yard": true,
            "house": true,
            "colour": "orange"
        }
    }
}

场景2:asset不存在

原始输入:

{
    "name": "Paul",
    "country": "USA",
    "spec": {}
}

执行命令后输出:

{
    "name": "Paul",
    "country": "USA",
    "spec": {
        "asset": {
            "house": true,
            "colour": "orange"
        }
    }
}

场景3:asset存在但字段值错误

原始输入:

{
    "name": "Paul",
    "country": "USA",
    "spec": {
        "asset": {
            "house": false,
            "colour": "black"
        }
    }
}

执行命令后输出:

{
    "name": "Paul",
    "country": "USA",
    "spec": {
        "asset": {
            "house": true,
            "colour": "orange"
        }
    }
}

命令逻辑说明

  • .spec.asset |= ...:定位到spec下的asset字段,对其执行后续修改操作
  • (. // {}):如果asset不存在(或值为null),则用空对象{}替代,确保合并操作能正常触发
  • + {"house": true, "colour": "orange"}:将指定键值对与原有(或空)对象合并,强制覆盖原有字段值,同时保留未指定的其他字段(如场景1中的yard)

内容的提问来源于stack exchange,提问作者infotechsups

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:34:57