假设我有一个JSON模式,它允许这样的对象:
...
"assetMetadata": {
"type": "object",
"additionalProperties": false,
"properties": { ... }
}
...
字符串
比如说我想改变它,允许相同的对象,或者是特定对象的数组。这里只接受一个数组:
...
"assetMetadata": {
"type": "array",
"description": "...",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {...}
}
...
型
属性是相同的(它是相同的对象,只是多个选项而不是一个)。
有趣的是,在我正在做的项目中,unmarshaller已经可以处理这两种情况(它将单个对象转换为大小为1的序列),所以纯粹是验证阻止了我继续前进。我们希望保持与现有API的可比性,这就是我现在不能只需要一个数组的原因。
2条答案
按热度按时间ax6ht2ek1#
您可以使用
anyOf
关键字和definitions
/$ref
来避免重复。字符串
mnowg1ta2#
接受的答案在JSON模式验证器中对我不起作用。
阵列未被接受。
我做了一些调整和更改,使其工作,这里是一个示例模式:
字符串
用于测试验证的对象:
型
用于测试验证的对象数组:
型
JSON Schema Validator for object
JSON Schema Validator for array (of the same objects)的