【问题标题】:json schema validator for validate key duplication node js用于验证密钥重复节点 js 的 json 模式验证器
【发布时间】:2015-12-14 14:17:22
【问题描述】:

我正在使用 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 请求生成错误消息“invalid json package”。怎么可能?

【问题讨论】:

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


    【解决方案1】:

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

    JSON 文本不应有重复的键,根据 RFC 7159(和更早的 RFC 4627):

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

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

    如果您需要检查假定为 JSON 文档中的重复键,则应在 JSON 解码步骤期间完成,甚至在它到达架构验证器之前。

    【讨论】:

    • 这并不能解决问题,只说明原因
    猜你喜欢
    • 2023-03-30
    • 2019-09-24
    • 1970-01-01
    • 2018-07-25
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多