JSON模式:日期大于其他模式

Dji*_*iaw 5 jsonschema node.js json-schema-validator

我有一个像这样的json架构:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Operation",
  "description": "The schema of an operation",
  "type": "object",
  "properties": {
    "id":{
      "description": "Unique identifier of the service",
      "type": "string"
    },
    "description":{
      "type": "string"
    },
    "dateDebut":{
      "type": "string",
      "format": "date-time"
    },
    "dateFin":{
      "type": "string",
      "format": "date-time"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能在我的架构中说dateFin必须大于dateDebut

小智 13

该库支持它 https://github.com/epoberezkin/ajv#features

var ajv = Ajv({v5:true,allErrors: true})

{
    "startDate": {
        "format": "date",
        "message": "Please Enter correct date format YYYY-MM-DD"
    },
    "endDate": {
        "format": "date",
        "message": "Please Enter correct date format YYYY-MM-DD",
        "formatMinimum": {
            "$data": "1/startDate"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该标记为正确答案。 (3认同)

Iva*_*tov 5

您不能在JSON-Schema级别上执行此操作。您必须针对您的Operation对象分别进行验证。通常,JSON-Schema仅提供一种“格式正确”的完整性检查:关于属性是数字,日期还是与正则表达式匹配的字符串;或关于具有某些嵌套属性结构的对象。更高级的业务规则(例如您示例中的规则)应在其他位置进行控制。