我有一个基本模式base.json
,它定义了一个名为foobar
的类型:
{
"definitions": {
"foobar": {
"type": "string"
}
}
}
然后我有另一个基于该类型的模式instance.json
,并尝试限制其潜在值:
{
"type": "object",
"properties": {
"raboof": {
"$ref": "base.json#/definitions/foobar",
"enum": [
"this is a foobar!"
]
}
}
}
如果我尝试验证以下文件wrong_data.json
:
{
"raboof": "not really a foobar..."
}
我的验证工具未报告任何错误。
如果在"$ref": "base.json#/definitions/foobar"
中将"type": "string"
更改为instance.json
,我确实会出错。
我错了吗?
答案 0 :(得分:1)
第7稿的JSON Schema核心规范(当前最新)在关于# 4: I expect this to run in parallel but it does not
f = xr_interp_da.interp({'xp':da})
...的部分中声明了以下内容...
具有“ $ ref”属性的对象模式必须解释为
“ $ ref”参考。 “ $ ref”属性的值必须是URI
参考。根据当前URI基础进行解析,它标识了
要使用的架构的URI。 “ $ ref”对象中的所有其他属性必须 被忽略。
https://tools.ietf.org/html/draft-handrews-json-schema-01#section-8.3
请特别注意,您不能将 .....
box.addEventListener('mouseout', disappear);
function disappear() {
box.innerHTML = "";
}
与同一对象中的其他关键字一起使用,因为该对象中的其他键将被忽略。
您可以通过包装$ref
...
$ref
草案8中将允许这样做,因此不再需要变通方法,但尚未发布。