我使用json架构验证器来验证nodejs中的传入json数据包。我能够检查键值是否存在,还检查是否存在任何无效键。细
这是我的json架构代码,
function testLoginJsonSchema() {
}
testLoginJsonSchema.loginRequestSchema = {
type: 'object',
properties: {
uname: {
type: 'string',
required: true
},
password: {
type: 'string',
required: true
}
},
"additionalProperties": false
};
module.exports = testLoginJsonSchema;
但我需要检查密钥是否重复。它没有使用此代码。
有效的json
{
"uname":"test@manaf.com",
"password":"validPassword"
}
无效的json
{
"uname":"test@manaf.com",
"password":"InvalidPassword",
"password":"validPassword"
}
我需要生成错误消息"无效的json包"对于无效的json请求。怎么可能?
答案 0 :(得分:1)
JSON Schema定义了对JSON文档表示的数据结构的约束。所以在我们考虑JSON Schema之前,我们必须弄清楚如何解码JSON文档,这是我们的问题:
根据{{3}}(以及之前的RFC 4627),JSON文本不应包含重复的密钥:
对象中的名称应该是唯一的。
解码此文档时的行为未定义(请参阅RFC 7159中的第二段)。某些实现会将此视为无效JSON并发出警告,大多数将采用其中一个值(第一个或最后一个)并忽略其他值。 JSON.stringify()
没有可能输入会产生重复的密钥。
如果你需要在所谓的JSON文档中检查重复的密钥,那么这应该在JSON解码步骤中完成,甚至在它到达模式验证器之前。