我有非常基本的架构,表现得有些奇怪。
{
"$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"}
]
}
它失败了(sample)说数组中的字符串元素多于一个模式。如果我更改对别名的引用'只说{"类型":"字符串"它按预期工作。我做错了什么?
提前致谢。
答案 0 :(得分:1)
您使用的所有关键字(// somewhere before:
Writer underlyingWriter = /* get the underlying writer from somewhere */;
XMLStreamWriter xmlStreamWriter = factory.createXmlStreamWriter(underlyingWriter);
xmlStreamWriter.flush();
underlyingWriter.write(rawXML);
underlyingWriter.flush();
// carry on using the XMLStreamWriter
,properties
,required
)仅在值为对象时才适用。因为没有任何东西要求值是一个对象,所以任何不是对象的东西都会通过。仅当对象关键字是对象时才考虑它们。
您可以通过多种方式使架构正常工作,但最直接的方法是将additionalProperties
添加到"type": "object"
架构中。