Standard-JsonSchema 不符合 Standard-JsonSchema
Standard-JsonSchema does not comply to Standard-JsonSchema
这个话题听起来有点令人困惑,不是吗?
据我了解"JsonSchema-Validation" "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 "properties" 处于同一级别。
但在标准 JsonSchema 中它们不是。它们位于 Propertykey "properties".
中包含的 JsonObject 中
我哪里弄错了?
第二期:
参考条目是什么
“$参考”:“#”
意思是?
它指的是什么定义条目?
正常的参考条目应该看起来更像:
"$ref": "#/definitions/positiveInteger"
感谢任何帮助。
谨致问候
胡德安
让我们稍微分解一下架构以使事情更清楚一些。如果我对你的理解正确,这就是让你绊倒的部分。
{
...
"properties": {
...
"properties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
...
},
}
棘手的部分是您必须意识到第二个 "properties" 不是关键字,而是 属性 名称。这是定义 properties
关键字的元模式。因此,这并不是将 additionalProperties
关键字嵌套在 properties
关键字中的情况,乍一看似乎如此。
“#”指的是文档的根目录。所以,{ "$ref": "#" }
是一个递归引用。换句话说,“#”是指整个元模式。上面的架构段将 properties
关键字定义为值为架构的对象。
最后,我可以向您保证,任何正常运行的验证器都会针对元模式成功验证任何有效模式(包括元模式本身)。如果不是,则它是验证器中的错误,应报告给您正在使用的验证库的维护者。
这个话题听起来有点令人困惑,不是吗?
据我了解"JsonSchema-Validation" "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 "properties" 处于同一级别。 但在标准 JsonSchema 中它们不是。它们位于 Propertykey "properties".
中包含的 JsonObject 中我哪里弄错了?
第二期: 参考条目是什么 “$参考”:“#” 意思是? 它指的是什么定义条目? 正常的参考条目应该看起来更像: "$ref": "#/definitions/positiveInteger"
感谢任何帮助。
谨致问候 胡德安
让我们稍微分解一下架构以使事情更清楚一些。如果我对你的理解正确,这就是让你绊倒的部分。
{
...
"properties": {
...
"properties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
...
},
}
棘手的部分是您必须意识到第二个 "properties" 不是关键字,而是 属性 名称。这是定义 properties
关键字的元模式。因此,这并不是将 additionalProperties
关键字嵌套在 properties
关键字中的情况,乍一看似乎如此。
“#”指的是文档的根目录。所以,{ "$ref": "#" }
是一个递归引用。换句话说,“#”是指整个元模式。上面的架构段将 properties
关键字定义为值为架构的对象。
最后,我可以向您保证,任何正常运行的验证器都会针对元模式成功验证任何有效模式(包括元模式本身)。如果不是,则它是验证器中的错误,应报告给您正在使用的验证库的维护者。