首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标准-JsonSchema不符合标准-JsonSchema

标准-JsonSchema不符合标准-JsonSchema
EN

Stack Overflow用户
提问于 2017-03-01 22:45:26
回答 1查看 230关注 0票数 1

这个话题听起来有点混乱,不是吗?

就我所理解的“JsonSchema验证”而言,在"json-schema.org/schema#“下有一个标准的JsonSchema,它应该为其他JsonSchemas定义允许的结构。这个位于"json-schema.org/schema#“的标准JsonSchema本身就是一个JsonFile (与任何其他JsonSchema一样),也是一个JsonSchema。

现在说到我自己的困惑:当我针对自己验证这个特定的标准JsonSchema时,我会看到JsonNodes/JsonObject-PropertyKeys "additionalProperties“周围的错误。

正如在"json-schema.org/example2.html“中所描述的那样,”PropertyKeys“additionalProperties应该与PropertyKeys”属性“的级别相同。但在标准的JsonSchema中,它们不是。它们位于Propertykey "properties“中包含的JsonObject中。

我做错什么了?

第二个问题:引用条目"$ref":"#“是什么意思?它指的是什么定义条目?正常的引用条目应该更像:"$ref":“#/定义/正整数”

任何帮助都是非常感谢的。

我谨向HuDeanY问好

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-02 00:00:41

让我们把模式分解一下,让事情变得更清楚一些。如果我对你的理解是正确的,这就是绊倒你的部分。

代码语言:javascript
复制
{
  ...
  "properties": {
    ...
    "properties": {
      "type": "object",
      "additionalProperties": { "$ref": "#" },
      "default": {}
    },
    ...
  },
}

棘手的部分是,您必须认识到,第二个“属性”不是关键字,而是一个属性名称。这是定义properties关键字的元模式。因此,这并不是在properties关键字中嵌套properties关键字的情况,因为乍一看,这似乎不是一种情况。

"#“指文档的根。因此,{ "$ref": "#" }是一个递归引用。换句话说,"#“指的是整个元模式。上面的架构段将properties关键字定义为值为模式的对象。

最后,我可以向您保证,任何正常工作的验证器都将成功地根据元模式验证任何有效的模式(包括元模式本身)。如果没有,那么它是验证器中的一个错误,应该报告给您正在使用的验证库的维护者。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42543562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档