架构应该只允许以下星座:{"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"}
如果没有我正在使用的“对象”容器,我会很高兴,因为减少了开销。
也许有人知道解决方案,谢谢
答案 0 :(得分:0)
该输入存在一个更基本的问题:
{"status":"nok","status":"nok"}
主要是:输入无效JSON 。 RFC 4627,第2.2节,明确指出“对象中的名称应该是唯一的”。在你的情况下,他们不是。
这意味着您使用的JSON解析器可以使用此类输入执行任何操作。一些JSON API将首先获取它们所获得的任何值,其他解析器将获取它们读取的最后一个值,其他解析器甚至会合并值 - 根据RFC,这些都不是非法的。
实质上:给定这样的输入,你不能保证JSON解析器的输出将是什么;因此,您无法保证此类输入的JSON Schema验证。