用于验证密钥复制节点js的json模式验证器

时间:2015-12-14 14:17:22

标签: json node.js validation jsonschema json-schema-validator

我使用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请求。怎么可能?

1 个答案:

答案 0 :(得分:1)

JSON Schema定义了对JSON文档表示的数据结构的约束。所以在我们考虑JSON Schema之前,我们必须弄清楚如何解码JSON文档,这是我们的问题:

根据{{​​3}}(以及之前的RFC 4627),

JSON文本不应包含重复的密钥

  

对象中的名称应该是唯一的。

解码此文档时的行为未定义(请参阅RFC 7159中的第二段)。某些实现会将此视为无效JSON并发出警告,大多数将采用其中一个值(第一个或最后一个)并忽略其他值。 JSON.stringify()没有可能输入会产生重复的密钥。

如果你需要在所谓的JSON文档中检查重复的密钥,那么这应该在JSON解码步骤中完成,甚至在它到达模式验证器之前。