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

如何编写JSON Schema(v2020-12)验证无限嵌套的设计令牌?

设计令牌嵌套结构的JSON Schema解决方案(v2020-12)

针对你需要验证无限层级嵌套的设计令牌需求,以下是符合v2020-12版本的JSON Schema,严格满足「每个层级只能包含单个未知名称子属性或设计令牌,无额外属性」的规则:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "anyOf": [
    {
      "type": "object",
      "required": ["$value", "$type"],
      "additionalProperties": false
    },
    {
      "type": "object",
      "maxProperties": 1,
      "additionalProperties": { "$ref": "#" }
    }
  ]
}

关键规则说明

  • 令牌对象分支:明确要求必须包含$value和$type字段,且不允许有其他额外属性(additionalProperties: false)。
  • 嵌套容器分支:限制对象只能有1个属性(maxProperties: 1),并且这个属性的值必须符合当前Schema的规则(additionalProperties: { "$ref": "#" }),以此实现无限层级的嵌套验证。
  • anyOf逻辑:每个层级的结构只能是上述两种情况之一,完全匹配你提出的合法性要求。

验证示例

合法结构

{
  "unknown_property_1": {
    "unknown_property_2": {
      "unknown_property_n": {
        "$value": "#fff",
        "$type": "color"
      }
    }       
  }
}

非法结构(存在多个属性)

{
  "unknown_property_1": {
    "fancy_unwanted_property": 123,
    "unknown_property_2": {
      "unknown_property_n": {
        "$value": "#fff",
        "$type": "color"
      }
    }       
  }
}

该结构会因unknown_property_1包含2个属性,违反maxProperties: 1规则而验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:45:38