1

假设我正在编写一个 JSON 模式。“类型”是“对象”。在对象的“属性”中包含名为“描述”的属性是否合法?我问是因为“描述”是 JSON 模式中的关键字。

示例:在此示例中,我为表示葡萄酒年份的 JSON 对象提供了一个简单的模式。我指定了四个属性:三个必需属性(房子、年份和葡萄品种)和一个可选属性,名为“description”。

{
    "$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"]
}
4

2 回答 2

3

我认为这将是合法的。我在规范中没有看到任何明确禁止定义与模式关键字相同的对象属性名称的内容。(此外,如果确实如此,“id”、“type”和“items”等有用且常用的词也将被禁止用作属性名称。)

于 2013-05-08T04:58:24.173 回答
2

中的键"properties"从不具有任何特殊含义。你可以在那里使用任何东西:"id", "description", 甚至"$ref".

模式关键字仅在直接位于模式对象内时才具有特殊含义。

于 2013-07-18T12:36:16.580 回答