假设我正在编写JSON模式。 “类型”是“对象”。在对象的“属性”中包含名为“description”的属性是否合法?我问,因为“description”是JSON模式中的关键字。
示例:在此示例中,我为表示葡萄酒年份的JSON对象提供了一个简单的模式。我指定了四个属性:三个必需的属性(房子,年份和葡萄品种)和一个可选的属性,名为“描述”。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Wine vintage",
"description": "JSON schema for wine vintages",
"type": "object",
"properties": {
"house": {
"description": "The name of the house that made the wine",
"type": "string"
},
"year": {
"description": "The year in which the wine was made",
"type": "integer"
},
"varieties": {
"description": "The grape varieties used to make the wine",
"type": "array",
"items": {
"type": "string",
"minItems": 1,
"uniqueItems": true
}
}
"description": {
"description": "A description of the wine's taste and character; a tasting note",
"type": "string"
}
},
"required": ["house", "year", "varieties"]
}
答案 0 :(得分:2)
我认为这是合法的。我在spec中没有看到任何明确禁止定义与schema关键字相同的对象属性名称的内容。 (此外,如果确实如此,有用和常用的词语如“id”,“type”和“items”也将作为属性名称不受限制。)
答案 1 :(得分:1)
"properties"
中的密钥从未有任何特殊含义。您可以在其中使用任何内容:"id"
,"description"
,甚至"$ref"
。
架构关键字在架构对象中直接时才具有特殊含义。