我对复制模式中的密钥有疑问。这是一个例子:
main.schema.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"main.schema": {
"properties": {
"value": {
"description": "Status",
"type": "boolean"
}
},
"type": "object"
}
},
"allOf": [
{
"$ref": "baseResource.json#/definitions/baseResource"
},
{
"$ref": "#/definitions/main.schema"
}
],
"id": "main.schema.json#",
"required": [
"value"
],
"title": "Title",
"type": "object"
}
baseResource.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"allOf": [
{
"$ref": "#/definitions/baseResource"
}
],
"definitions": {
"baseResource": {
"properties": {
"id": {
"description": "SomeDesc",
"type": "string"
},
"value": {
"type": [
"string",
"boolean"
]
}
},
"type": "object"
}
},
"id": "baseResource.json#",
"required": [
"id"
],
"title": "Base Resource",
"type": "object"
}
什么类型的价值适合这个?值应该只是布尔值(根据主模式)或者可以是布尔值或字符串(对基本资源的引用是正确的)。我使用的JSON验证器不允许值不是布尔值,我在JSON specyfication中搜索了很多但是没有关于它的信息。
答案 0 :(得分:1)
在这种情况下,value
必须是布尔值。
allOf
语句表示JSON数据必须对所有列出的模式有效。
value
为字符串或布尔值value
为布尔值JSON对象对这两种模式有效的唯一方法是它是否为布尔值。