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

如何为JSON Schema固定属性集高效应用相同配置?

解决方案

针对你的需求,有两种更高效的方式来统一配置这些setting_*属性的类型:

方法一:使用patternProperties匹配命名规则

利用patternProperties可以匹配符合特定正则表达式的属性名,一次性给所有匹配的属性应用相同的Schema规则,同时保留additionalProperties: false来禁止未定义的属性。修改后的Schema如下:

{
    "$id": "<some id here>",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "settings": {
            "type": "object",
            "additionalProperties": false,
            // 匹配所有以setting_开头的属性名,可根据实际命名规则调整正则
            "patternProperties": {
                "^setting_\\d+$": {
                    "type": "string"
                }
            },
            "required": [
                "setting_1",
                "setting_2",
                "setting_3"
                // 其他需要必填的setting属性继续添加
            ]
        }
    },
    "required": [
        "settings"
    ]
}
  • ^setting_\\d+$是正则表达式,匹配所有setting_后跟数字的属性名,若你的属性后缀不是数字,可改成^setting_.+$匹配任意后缀。
  • 不管新增多少个setting_*属性,只要命名符合规则,都会自动应用type: string的约束,无需逐个在properties中定义。

方法二:结合$defs与additionalProperties(动态属性场景)

如果settings对象只允许setting_*类属性,且不需要逐个指定必填项(或所有setting_*都是可选),可以用propertyNames限制属性名格式,再通过additionalProperties引用统一规则:

{
    "$id": "<some id here>",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": false,
    "$defs": {
        "stringSetting": {
            "type": "string"
        }
    },
    "properties": {
        "settings": {
            "type": "object",
            // 限制属性名必须符合setting_*格式
            "propertyNames": {
                "pattern": "^setting_\\d+$"
            },
            // 所有符合命名规则的属性都应用统一的字符串规则
            "additionalProperties": {"$ref": "#/$defs/stringSetting"}
        }
    },
    "required": [
        "settings"
    ]
}

这种方式适合无需指定具体必填属性的场景,所有符合命名规则的属性都会被自动校验为字符串类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:43:29