JSON模式+相对JSON指针:如何验证“确认密码”字段

Posted

技术标签:

【中文标题】JSON模式+相对JSON指针:如何验证“确认密码”字段【英文标题】:JSON schema + relative JSON-pointers: how to verify "confirm password" field 【发布时间】:2018-03-03 03:22:58 【问题描述】:

这是我的JSON Schema:


  "required": [
    "username",
    "password",
    "confirmPassword"
  ],
  "properties": 
    "username": 
      "minLength": 3,
      "type": "string"
    ,
    "password": 
      "minLength": 6,
      "type": "string"
    ,
    "confirmPassword": 
      "const": 
        "$data": "1/password"
      ,
      "type": "string"
    
  ,
  "type": "object"

这是我的数据:


  "username": "abc",
  "password": "asdfasdf",
  "confirmPassword": "asdfasdf"

您可以将这些复制粘贴到this online validator 以查看会发生什么。

confirmPassword 字段验证失败并显示错误消息:

值“asdfasdf”与 const 不匹配。

我认为我的relative JSON pointer 有问题,但我不知道正确的语法是什么。

AFAICT,1/password 的意思是“上一层,然后检查 password 属性”,但事实并非如此。什么是正确的语法?

我正在使用的具体实现是 AJV,它说 确实 support relative-JSON-pointers.

【问题讨论】:

@Amy 您链接的规范仅适用于 absolute JSON 指针,不是吗? 【参考方案1】:

原来唯一的问题是我忘记将$data option 设置为true。例如

const ajv = new Ajv(
    allErrors: true,
    $data: true,
);

【讨论】:

以上是关于JSON模式+相对JSON指针:如何验证“确认密码”字段的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mongoose 模式验证密码/确认密码

如何在 Python 中验证 JSON Schema 模式?

如何根据它在 Java 中指定的版本规范验证 json 模式

如何组合 Json 模式

如何使用具有必填字段的 JSON 模式验证 http PATCH 数据

在 C# 中针对 XSD 模式验证 json 数据