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

11
这是我的 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"
}

你可以将它们复制粘贴到这个在线验证器中,以查看会发生什么。 confirmPassword字段未通过验证,显示错误消息:

值“asdfasdf”与常量不匹配。

我认为我的相对JSON指针存在问题,但我无法弄清正确的语法是什么。
据我所知,1/password的意思是“向上一级,然后检查password属性”,但事实并非如此。什么是正确的语法?
我正在使用的具体实现是AJV,它声称它确实支持相对JSON指针

@Amy,你提供的规范只适用于绝对JSON指针,是吗? - mpen
1个回答

13

结果发现唯一的问题在于我忘记将$data选项设置为true。例如:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接