从JSON草案4反向转换为JSON草案3

时间:2015-09-22 21:09:37

标签: json jsonschema

我有点奇怪的情况。我正在运行一个不支持草案4的JSON模式验证器,由于公司的困难,我坚持使用它而不是替换它。我们的开发人员给了我草案4格式的模式,所以我必须手工完成并对其进行反向转换,特别是必填字段。

这一切都运行良好,直到我遇到这样的事情(考虑这个伪代码;我仍然掌握JSON):

    "items": {
        "type": "array",
        "required" : true,
        "items": [ 
              {...},
              "required": ["0", "1"]  // This bit right here
        ],
    }

我告诉它基本上说,“数组中的前两项是必需的。”但我无法在JSON草案3中找到表达方式。这是否支持,如果是这样,你会如何表达它?

1 个答案:

答案 0 :(得分:1)

required是一个只对对象实例有意义的关键字,而不是数组。

指示数组必须至少包含2个项目的方式是Draft3Draft4中的minItems个关键字。

如果您需要为数组中的第一项和第二项表达任何其他模式,可以通过在items数组中包含两个模式来实现。例如,以下架构要求属性"0""1"包含在数组的第一个和第二个项目中。

对于草案3:

"items" : [{
        "properties" : {
            "0" : {"required" : true},
            "1" : {"required" : true}
        }
    }, {
        "properties" : {
            "0" : {"required" : true},
            "1" : {"required" : true}
        }
    }
]

草案4:

"items" : [{
        "required" : ["0", "1"]
    }, {
        "required" : ["0", "1"]
    }
]