JSON 架构重复属性
JSON schema duplicate properties
我对模式中的复制键有疑问。这是示例:
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 中搜索了很多,但没有关于它的信息。
在这种情况下,value
必须是布尔值。
allOf
语句意味着 JSON 数据必须对所有列出的模式有效。
- baseResouce 要求
value
为字符串或布尔值
- main.schema 要求
value
为布尔值
JSON 对象对这两种模式都有效的唯一方法是它是布尔值。
我对模式中的复制键有疑问。这是示例:
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 中搜索了很多,但没有关于它的信息。
在这种情况下,value
必须是布尔值。
allOf
语句意味着 JSON 数据必须对所有列出的模式有效。
- baseResouce 要求
value
为字符串或布尔值 - main.schema 要求
value
为布尔值
JSON 对象对这两种模式都有效的唯一方法是它是布尔值。