首页 > 解决方案 > 带有 $ref 的 Json 模式属性

问题描述

尝试将 $ref 用于整个属性。我不知道这是什么语法有效,但不验证有效负载。这应该会失败,但不会。

我也试过“$ref”:“file:./ref.json”。

架构:

{
  "animal": {
    "properties":{
      "allOf": {"$ref": "file:./ref.json"}
    }
  },
  "required": ["animal"]
}

参考.json:

{
    "action":{
        "type": "string"
        },
    "required": ["action"]
}

有效载荷

{
    "animal": {
        "action": 2
    }
}

标签: jsonjsonschemajson-schema-validator

解决方案


  • "allOf": {"$ref": "file:./ref.json"}在语法上无效—— an 的值allOf必须是一个数组。(您的评估员应该就此向您发出警告。)
  • JSON Schema 评估器不需要支持从磁盘或网络加载外部文件。检查您的文档以了解如何将文档添加到评估器,以便$ref. (当您引用未知资源时,您的评估员应该给您一个警告。)

您没有看到上述错误的原因是因为您的整个架构中没有可识别的关键字——您缺少"properties": { ... }围绕整个架构的包装。顶级“关键字”是“动物”,它无法识别,因此模式中的任何地方都没有可识别的关键字,因此没有什么可以使它返回无效结果。


推荐阅读