如何在JSON模式中将allProf与additionalProperties一起使用?

时间:2016-08-03 08:05:46

标签: json jsonschema json-schema-validator

考虑这个例子:

"allOf": [
    {"$ref": "test-address-prefix-types-base.json#"},
    {
        "properties": {}, "additionalProperties" : false
    }
]}

当我使用Java模式验证器验证时,我收到错误说:

"keyword":"additionalProperties","message":"object instance has properties which are not allowed by the schema: [\"attributes\",\"type\"]"}]

但是针对基本模式验证的相同JSON对象(test-address-prefix-types-base)没有错误地传递。

引用的架构(基础架构)没有设置其他属性。

这是我正在使用的json消息:

        String message = "{\"data\":{\"attributes\":{" +
            "\"notation\": \"A\"," +
            "\"prefixType\": \"A\"}" +
            ",\"type\":\"test-address-prefix-types\"}}";

我是否错过了架构中的任何内容? 感谢

1 个答案:

答案 0 :(得分:3)

您的架构可以通过这种方式扩展:

allof:它必须针对两个模式验证independently

  • 第一个具有通过ref链接的任意属性。
  • 第二个不允许任何属性"additionalProperties" : false,除了空集"properties" : {}中定义的属性。换句话说,它不具备任何财产。

这个问题可以在标准草案5中解决。有关详情,请参阅the following SO question