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

如何为JSON Schema Draft-07定义受枚举约束的动态键?

JSON Schema Draft-07 约束对象键为枚举值的实现方案

要实现允许使用任意数量、属于指定枚举集合的未预定义键,可以结合propertyNames和additionalProperties关键字来定义模式,完全适配你给出的示例场景。

核心思路

  • 用propertyNames约束目标对象的所有键必须属于指定枚举集合["a", "b", "c"]
  • 用additionalProperties定义每个键对应的值的格式(这里要求是数字数组)
  • 不通过properties预定义具体键名,保留键的灵活性,只要符合枚举要求即可

完整Schema示例

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "letters": {
      "type": "object",
      "propertyNames": {
        "enum": ["a", "b", "c"]
      },
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "number"
        }
      },
      // 可选配置:如果要求letters至少包含一个键,添加以下行
      "minProperties": 1
    }
  },
  // 可选配置:如果letters是必填字段,添加以下行
  "required": ["letters"]
}

校验效果说明

  • 你提供的两个示例JSON都会顺利通过校验
  • 若letters中出现"d"这类不在枚举中的键,会触发校验失败
  • 若某个键对应的值不是数字数组(比如字符串、单个数字),也会校验失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:14:55