【问题标题】:Add a minlength condition for combined field values为组合字段值添加最小长度条件
【发布时间】:2018-07-09 16:31:45
【问题描述】:

我的表单中有名字和姓氏字段,我需要强制执行一个规则,即名字和姓氏的组合长度至少应为 4 个字符。这在 JSON 模式 v4 验证器中是否可行?我的 JSON 如下所示:

{
    "first_name" : "Fo",
    "last_name"  : "L",
    .....
}

我无法在表单中保留全名字段 - 它必须是两个单独的字段名和姓。我知道一种方法是在后端连接名字和姓氏,然后有一个像这样的验证器:

$full_name = $first_name + $last_name;
--------------------------------------
"full_name": {
        "type": "string",
        "error_code": "incorrect_length",
        "anyOf": [
            { "minLength": 4 },
            { "maxLength": 0 }
        ]
    },

但是,我正在研究一种无需创建虚拟 full_name 字段的方法。是否可以仅使用 first_name 和 last_name 字段进行验证?

【问题讨论】:

    标签: json jsonschema json-schema-validator


    【解决方案1】:

    这可以通过 JSON Schema 实现,尽管方式不是很好,最好在后端进行。没有关键字可以实现这一点,因此您必须使用 oneOf 并覆盖有效案例,如下所示:

    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "type": "object",
      "oneOf": [
        {
          "properties": {
            "first_name": {
              "minLength": 1
            },
            "last_name": {
              "minLength": 3
            }
          }
        },
        {
          "properties": {
            "first_name": {
              "minLength": 2
            },
            "last_name": {
              "minLength": 2
            }
          }
        },
        {
          "properties": {
            "first_name": {
              "minLength": 3
            },
            "last_name": {
              "minLength": 1
            }
          }
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      • 2021-02-16
      • 2016-06-16
      • 1970-01-01
      相关资源
      最近更新 更多