JSON模式:如何检查字段是否包含值

3
我是一个翻译助手,可以帮您翻译以下与IT技术相关的内容。需要翻译的内容涉及JSON模式验证器。我需要检查一个特定字段email,以查看它是否是4个可能的电子邮件之一。让我们称这些可能性为['test1','test2','test3','test4']。有时电子邮件包含\n换行符,因此我也需要考虑这一点。在JSON模式中是否可以使用字符串包含方法?
以下是没有电子邮件检查的模式:
{
  "type": "object",
  "properties": {
    "data": {
        "type":"object",
        "properties": {
            "email": {
                "type": "string"
            }
        },
    "required": ["email"]
    }
  }
}

我的输入负载是:

{
  "data": {
      "email": "test3\njunktext"
      }
}

我需要以下负载才能通过验证,因为其中包含test3。谢谢!
1个回答

2
我能想到两种方法:
使用枚举,您可以定义一个有效电子邮件列表:
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "email": {
          "enum": [
            "test1",
            "test2",
            "test3"
          ]
        }
      },
      "required": [
        "email"
      ]
    }
  }
}

或者使用模式, 该模式允许你使用正则表达式匹配有效的电子邮件地址:
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "email": {
          "pattern": "test"
        }
      },
      "required": [
        "email"
      ]
    }
  }
}

enum的方法不适用,因为它会排除值中的附加文本。你必须使用pattern - undefined
感谢您的反馈。我已经在我的回答中考虑到了那种情况,除非我弄错了。enum这种方法也很有用,并且提到了它,以防 OP 只需对静态电子邮件列表进行检查。 - undefined
谢谢!这个模式对我有用,对于多个模式,我使用了anyOf: [ {type: string, pattern: pattern},... etc]。 - undefined

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