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

如何递归删除JSON Schema中所有required键?适配Helm场景

移除JSON Schema中所有嵌套的required属性(适配Helm Values子集场景)

我给Kubernetes Helm的Values文件写了一份JSON Schema,里面定义了不少必填属性。但Helm允许使用Values文件的子集——这些子集YAML会和基础配置合并,所以根本不需要包含所有必填键。可IntelliJ会因为子集缺少必填键报错,这个报错完全没必要理会。

我需要生成一份移除了所有required属性的Schema,而且Schema是多层嵌套结构,required可能藏在第9、10层,得支持递归处理,还要能在GitHub Action或Shell环境里直接运行。之前试了jq但没找到可行的写法。

解决方案

用jq的递归遍历功能就能搞定,核心是递归删除所有层级的required键。执行以下命令即可:

jq 'walk(if type == "object" then del(.required) else . end)' input-schema.json > output-schema.json

说明:walk函数会递归遍历JSON的每个节点,只要遇到对象类型的节点,就删除其中的required属性,其他类型的节点保持原样。

示例输入

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "blackbox": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            },
            "required": ["enabled"]
        }
    },
    "required": ["blackbox"]
}

示例输出

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "blackbox": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:44:50