我有一个非常基本的架构,表现有些奇怪。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties":
{
"$out":
{
"type": "array",
"minItems": 1,
"items": {
"oneOf": [
{ "type": "string" },
{ "$ref": "#/definitions/alias" }
]
}
}
},
"definitions":
{
"alias":
{
"properties":
{
"$source": { "type": "string" },
"$alias": { "type": "string" }
},
"required": [ "$source", "$alias" ],
"additionalProperties": false
}
}
}
如果我使用以下JSON进行测试:
{
"$out": [
"12w",
{ "$source": "WH.Code", "$alias": "WarehouseCode"}
]
}
它失败(样本)说数组中的字符串元素再次有效,而不是一个模式。如果我仅使用{“ type”:“ string”}来更改对'alias'的引用,它将按预期工作。我究竟做错了什么?
提前致谢。
所有你使用关键字(properties
,required
,additionalProperties
)只有当值是一个对象适用。因为没有要求值是对象的东西,所以不是对象的任何东西都会通过。仅当对象是对象时才考虑对象关键字。
有多种方法可以使模式起作用,但是最直接的方法是将其添加"type": "object"
到alias
模式中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句