JSON模式重复属性

时间:2016-01-18 13:19:48

标签: json jsonschema json-schema-validator

我对复制模式中的密钥有疑问。这是一个例子:

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中搜索了很多但是没有关于它的信息。

1 个答案:

答案 0 :(得分:1)

在这种情况下,value必须是布尔值。

allOf语句表示JSON数据必须对所有列出的模式有效。

  • baseResouce要求value为字符串或布尔值
  • main.schema要求value为布尔值

JSON对象对这两种模式有效的唯一方法是它是否为布尔值。