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

如何利用JSON $ref复用Schema A定义含minProperties的Schema B?

问题

现有两个JSON Schema:A和B,二者唯一区别是Schema B多了minProperties属性。能不能通过JSON的$ref属性复用Schema A的内容,不用重复定义所有属性再添加minProperties?

示例如下:

  • Schema A:
{
  "id": "A",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    ... 大量属性 ...
  }
}
  • Schema B:
{
  "id": "B",
  "type": "object",
  "additionalProperties": false,
  "minProperties": 1,
  "properties": {
    ... 和Schema A完全相同的大量属性 ...
  }
}
解决方案

当然可以,用JSON Schema的allOf关键字搭配$ref就能实现复用,不用重复写那些繁杂的属性定义。

具体实现

让Schema B通过$ref引用Schema A的全部规则,同时在allOf数组里加入包含minProperties的配置对象,这样既能复用A的所有约束,又能添加B独有的规则:

{
  "id": "B",
  "allOf": [
    { "$ref": "#A" },  // 路径根据实际情况调整:同文件用#A,跨文件则写文件路径+#A,比如"schema-a.json#A"
    {
      "minProperties": 1
    }
  ]
}

注意事项

  • $ref的路径必须正确:如果A和B在同一个JSON文件里,直接用#A就能引用到A的定义;如果A是单独的文件,要写全文件路径,比如"$ref": "./schema-a.json#A"。
  • 这种方式会同时应用Schema A的所有规则(包括properties、additionalProperties等)和新增的minProperties约束,完全避免了重复代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:09:59