我想描述这个JSON:
{
"key1": {},
"key2": {}
}
所以我创建了这个JSON模式:
{
"type": "object",
"patternProperties": {
".+": {
"type": "object"
}
}
}
问题在于,当我向JSON添加$schema
链接时,它无效:
首先,$schema
需要任何特殊处理似乎很奇怪,但即使我尝试这样做:
{
"type": "object",
"properties": {
"$schema": {
"type": "string"
}
},
"patternProperties": {
".+": {
"type": "object"
}
}
}
它没有修复:
我在http://schemastore.org/json/浏览了几个模式,他们似乎没有对$schema
进行任何特殊处理。它是如何工作的?
答案 0 :(得分:1)
$ schema关键字用于声明JSON片段实际上是JSON模式的一部分。 但是当它不是模式时,它不会在你的JSON中使用,即它没有在你的JSON数据中使用。
然后使用验证程序将架构与JSON数据进行匹配。例如,您可以使用this validator。在左侧,您指定右侧指定JSON数据的架构(没有任何引用或链接到架构,您不在右侧使用$ schema关键字)
$ schema关键字指定架构应用于哪个版本的JSON架构标准(同样是JSON架构,而不是JSON数据)。大部分时间是:
"$schema": "http://json-schema.org/draft-04/schema#"
更多信息here
答案 1 :(得分:1)
接受的答案是正确的,但这是您需要的解决方法。
{
"type": "object",
"properties": {
"$schema": {
"type": "string"
}
},
"additionalProperties": {
"type": "object"
}
}
additionalProperites
仅适用于properties
中定义的属性。另一方面,patternProperties
适用于它匹配的任何财产。使用patternProperties
编写它的方式意味着“$ schema”必须是字符串和它必须是一个对象。由于这两件事情都不可能都是真的,“$ schema”永远不会以任何价值验证。