9

我有一个像这样的 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"
    }
  }
}

我怎么能在我的模式中说dateFin必须大于dateDebut

4

2 回答 2

17

这个库支持它 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"
        }
    }
}
于 2016-04-26T13:03:39.977 回答
7

您不能在 JSON-Schema 级别上执行此操作。您必须为您的Operation对象单独验证。一般来说,JSON-Schema 只提供一种“格式良好”的健全性检查:关于属性是数字、日期或匹配正则表达式的字符串;或关于具有某些嵌套属性结构的对象。更高级的业务规则(例如您的示例中的规则)应在其他地方进行控制。

于 2014-11-13T10:22:47.010 回答