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

如何编写定义复杂映射键的YAML Schema?

能否用YAML Schema定义复杂映射键的格式要求?

当然可以,但得用支持YAML复杂键约束的Schema规范——毕竟标准JSON Schema只认字符串键(因为JSON本身就不允许复杂键),没法直接处理YAML的高级特性。下面针对你给出的两个场景,分别给出可行的实现方案:

场景1:要求映射键必须是整数数组

通过Schema里的keys字段,就能指定键的格式:

type: mapping
keys:
  type: sequence
  items:
    type: int
values:
  type: str # 这里可以定义对应值的类型,比如字符串

验证规则很明确:

  • 所有映射键必须是只包含整数的数组
  • 像- [2, 3]这种键能通过验证,- ["hello", "world"]就会被拒绝

场景2:要求映射键必须是带value字符串字段的对象

同样用keys字段约束键的结构:

type: mapping
keys:
  type: mapping
  required:
    - value
  properties:
    value:
      type: str
  additionalProperties: false # 可选,如果要禁止键对象有其他额外字段就加上
values:
  type: str

对应的验证逻辑:

  • 所有映射键必须是包含value字段(且值为字符串)的对象
  • 像{value: "hello world"}这种键能通过验证,{hello: "world"}会被拒绝

补充说明

标准JSON Schema确实处理不了这类YAML专属的复杂键,但不少YAML验证工具(比如带自定义规则的yamllint、支持YAML扩展的jsonschema工具,或者专门的yaml-schema-validator)都支持这类扩展语法,能满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:30:02