IHe*_*oid 31 datetime json jsonschema
我有一个JSON和一个JSON模式
JSON:
{
"aaa": "4000-02-01 00:00:00"
}
Run Code Online (Sandbox Code Playgroud)
JSON-模式:
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"properties": {
"aaa": {
"type": "string",
"format": "date-time"
}
}, "required": ["aaa"]
}
Run Code Online (Sandbox Code Playgroud)
JSON由JSON模式验证.但是,如果我将字段更改aaa为"bla",则架构不会再注意到它不再是日期时间.
我错过了架构中的任何内容吗?
Bea*_*ker 33
对于Python的jsonschema库,在调用时指定格式检查器validate:
jsonschema.validate(data, schema, format_checker=jsonschema.FormatChecker())
Run Code Online (Sandbox Code Playgroud)
要验证日期时间格式,应安装strict-rfc3339软件包.
请参阅验证格式.
验证"format"是可选的.这部分是因为允许模式作者完全组成新格式,因此期望验证所有格式是不合理的.
您的库应该(如果它是体面的)有办法为特定格式注册自定义验证器.例如,tv4验证库(在JavaScript中)具有以下tv4.addFormat()方法:
tv4.addFormat('date-time', function (data) {
return isValidDate(data);
});
Run Code Online (Sandbox Code Playgroud)
完成此操作后"format": "date-time",在架构中应正确验证日期.
我通过使用这个库找到了解决方法。它检查 javascript 代码中字段的内容:
function isValidDate(datestring) {
var format = d3.time.format("%Y-%m-%d %H:%M:%S");
var date = format.parse(datestring);
if (date) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59577 次 |
| 最近记录: |