1

我对在模式中复制键有疑问。这是示例:

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 验证器,它不允许 value 为布尔值,我在 JSON specyfication 中搜索了很多,但没有关于它的信息。

4

1 回答 1

1

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

allOf语句意味着 JSON 数据必须对所有列出的模式都有效。

  • baseResouce 需要value是字符串或布尔值
  • main.schema 需要value是一个布尔值

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

于 2016-01-19T04:32:31.443 回答