【问题标题】:Validating Javascript Objects containing dates验证包含日期的 Javascript 对象
【发布时间】:2014-09-08 11:10:25
【问题描述】:

验证包含日期字段的 JavaScript 对象的最佳做法是什么?

有像 tv4 这样的 JSON 验证器可以validate the format of strings

但是,我们的业务逻辑适用于 JavaScript-Date 实例的日期,并且这些对象不会验证。

我们目前的程序是

  1. 使用 date reviver 使用 JSON.parse() 读取 business 对象
  2. 使用业务逻辑处理对象,然后使用验证
  3. 使用date stringifier 将对象转换为 JSON
  4. 用 JSON.parse() 读回字符串,现在没有 reviver
  5. 验证此对象

相对于步骤 3、4 和 5,是否有更好的验证方法? 最好直接验证 business 对象?

例子:

JSON 字符串

{
    "birth": "1994-03-17"
}

JSON 字符串的架构

{
    type: 'string',
    format: 'date-time'
}

企业对象

{
    birth: new Date("1994-03-17")
}

【问题讨论】:

  • if(businessobject['birth'] instanceof Date)
  • 是的,这是验证器应该做的。除了验证大量其他非日期字段。

标签: javascript json validation jsonschema


【解决方案1】:

如果您使用的是 tv4 库,您可以这样做:

tv4.addFormat('date-time', function (data) {
    if (data instaceof Date) return null;
    else return "not a valid date";
});

你的验证应该是:

{
    type: "object",
    format: "date-time"
}

你发布的问题中提到了这种方法(json schema date-time does not check correctly

【讨论】:

  • 哦,为什么我没有发现将类型更改为对象的技巧!让我检查一下我们的代码库...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多