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

时间:2018-12-03 20:17:23

标签: python json jsonschema

我有一个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 个答案:

答案 0 :(得分:0)

我可以想到两种方式:

使用enum可以定义有效电子邮件列表:

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "email": {
          "enum": [
            "test1",
            "test2",
            "test3"
          ]
        }
      },
      "required": [
        "email"
      ]
    }
  }
}

或与pattern一起使用,它允许您使用正则表达式匹配有效的电子邮件:

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "email": {
          "pattern": "test"
        }
      },
      "required": [
        "email"
      ]
    }
  }
}