这个话题听起来有点混乱,不是吗?
就我所理解的“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问好
发布于 2017-03-02 00:00:41
让我们把模式分解一下,让事情变得更清楚一些。如果我对你的理解是正确的,这就是绊倒你的部分。
{
...
"properties": {
...
"properties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
...
},
}棘手的部分是,您必须认识到,第二个“属性”不是关键字,而是一个属性名称。这是定义properties关键字的元模式。因此,这并不是在properties关键字中嵌套properties关键字的情况,因为乍一看,这似乎不是一种情况。
"#“指文档的根。因此,{ "$ref": "#" }是一个递归引用。换句话说,"#“指的是整个元模式。上面的架构段将properties关键字定义为值为模式的对象。
最后,我可以向您保证,任何正常工作的验证器都将成功地根据元模式验证任何有效的模式(包括元模式本身)。如果没有,那么它是验证器中的一个错误,应该报告给您正在使用的验证库的维护者。
https://stackoverflow.com/questions/42543562
复制相似问题