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

如何在JSON Schema中复用数组?解决enum引用$defs报错问题

问题解答

能不能将数组放入Schema的$defs中?

可以,但不能直接存放原始数组。$defs内的每一项必须是合法的JSON Schema(即对象或布尔值类型),你直接放入字符串数组的做法不符合Schema的结构规范,这正是验证报错的原因。

如何在Schema中复用数组?

如果要复用一组枚举值,正确的做法是把数组包裹在合法的Schema对象里,再通过$ref引用这个Schema。示例如下:

$defs:
  nameEnumSchema:
    enum: ["n1", "n2", "n3"]
properties:
  name:
    $ref: "#/$defs/nameEnumSchema"

如果需要在多个不同的Schema规则中复用该数组(比如同时用于enum和其他校验场景),可以借助$dynamicRef和$dynamicAnchor实现更灵活的复用,示例如下:

$defs:
  nameList:
    $dynamicAnchor: "names"
    enum: ["n1", "n2", "n3"]
properties:
  name:
    $dynamicRef: "#/$defs/nameList"
  alias:
    $dynamicRef: "#names"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:46:19