【问题标题】:Check JSON Schema which is syntactically correct, but not semantically检查语法正确但语义不正确的 JSON Schema
【发布时间】:2019-06-02 20:32:42
【问题描述】:

我想检查语法正确但语义不正确的 JSON 模式本身。

例如

{
      "$schema": "http://json-schema.org/draft-07/schema#",
      "$id": "http://example.com/root.json",
      "type": "object",
      "required": [
        "checked"
      ],
      "properties": {
        "checked": {
          "$id": "#/properties/checked",
          "type_invalid":"string"
        }
      }
    }

在上面的例子中有 type_invalid 键不正确,它应该是 type。有什么方法可以验证 JSON 架构本身吗?

供参考:我正在使用ajv 根据 JSON 模式验证 JSON。

【问题讨论】:

  • 没有现成的工具可以做到这一点,尽管我非常希望它会在今年开发。本周管理团队正在讨论它作为我们想要的东西,可能很快就会有人参与其中。
  • 您可以复制现有的元模式,并将其修改为不允许其他属性,然后使用它来验证您的模式。
  • @Relequestual 感谢您的解决方案,这对我有用!
  • 我会添加这个作为你接受的答案。
  • 那真的很有帮助

标签: node.js json jsonschema ajv


【解决方案1】:

您可以复制现有的元模式,并将其修改为不允许其他属性,然后使用它来验证您的模式。

【讨论】:

  • 但这不会给我正确的错误,即哪些属性无效(错误:架构无效:data.properties['checked'] 不应该有其他属性),你能建议一下
  • 您提供的解决方案无法正常工作 draft_04 元模式
  • 您提供的架构有一个 $schema,将其标识为 draft-7。
  • 是的,你是对的。我们可以为 draft_04,draft_06,draft_07 实现相同的行为吗?
  • 答案是 Draft-7 模式。如果您有 Draft-4 架构,那么您的架构可能会大不相同。
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多