1

Schema 应该只允许以下星座:{"status":"nok"}. 键必须始终是“状态”,值应该允许“ok”、“nok”、“inProgress”没有不同或额外的对象,...应该允许

我试过这个:

{
"description": "blabla",
"type": "object",
"properties": {
    "status": {
        "type": "string",
        "enum": [
            "ok",
            "inProgress",
            "nok"
        ],
        "required": true,
        "additionalItems": false
    }
},
"required": true,
"additionalProperties": false
}

这行得通,但是这个方案允许我可以发送相同的键/值对两次{"status":"nok","status":"nok"} ,如果没有我正在使用的这个“对象”容器也能工作,我也会很高兴,因为这样可以减少开销。也许有人知道解决方案,谢谢

4

1 回答 1

0

该输入存在一个更根本的问题:

{"status":"nok","status":"nok"}

主要是:该输入无效 JSONRFC 4627第 2.2 节明确指出“对象中的名称应该是唯一的”。在你的情况下,他们不是。

这意味着您使用的 JSON 解析器可以对这样的输入做任何事情。一些 JSON API 将获取它们首先遇到的任何值,其他解析器将获取它们读取的最后一个值,其他的甚至会合并值——根据 RFC,这些都不是非法的。

本质上:给定这样的输入,你不能保证 JSON 解析器的输出是什么;因此,您也不能保证此类输入的 JSON Schema 验证。

于 2013-01-03T00:36:39.423 回答