小编jma*_*ard的帖子

基于数据的ajv条件模式验证

我想根据另一个字段中的数据为一个字段指定正则表达式模式.这可能吗?我已经尝试过switch和$ data,但不知道如何使用它们.例如,如果数据如下:

{
   "contacts":[
      {
         "mode":"Email",
         "contact":"john.doe@abc.com"
      },
      {
         "mode":"Phone",
         "contact":"111-555-1234"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

和schema看起来像:

"$schema":"http://json-schema.org/draft-04/schema#",
   "type":"object",
   "properties":{
      "Contacts":{
         "type":"array",
         "minItems":1,
         "items":{
            "type":"object",
            "properties":{
               "mode":{
                  "type":"string",
                  "enum":[
                     "Email",
                     "Phone"
                  ]
               },
               "contact":{
                  "type":"string",
                  "pattern":"?????"
               }
            },
            "required":[
               "mode",
               "contact"
            ]
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如何根据模式中的数据设置联系模式,这样如果模式是电子邮件,它会验证联系人对电子邮件格式的正则表达式,如果模式是电话,它会验证联系人对电话格式的正则表达式?我有每个的正则表达式.我需要逻辑来选择其中一个.

schema json ajv

8
推荐指数
1
解决办法
4226
查看次数

标签 统计

ajv ×1

json ×1

schema ×1