1
我正在使用AJV库来验证我的JSON模式。我希望能够验证Startdate
是一个字符串。在不是字符串的情况下,应将其转换为N/A
。目前,它仅将undefined
转换为N/A
。AJV自定义关键字验证
然而,在这些情况下,它也不会达到预期效果:
null
- > “空”- 0 - > “0”
- 真实 - > “真”
如果我想将以上所有转换为N/A
字符串,我的customKeyword函数将会是什么样子?
JSON响应:
jsonResponse: {
"Issue": {
"StartDate": "December 17, 1995 03:24:00"
}
}
模式:
var ajv = new Ajv({ useDefaults: true, coerceTypes: 'undefined'});
const schema = {
"type": "object",
"properties": {
"Issue": {
"type": "object",
"properties": {
"StartDate": {"type": "string" "default": "N/A",
"stringTypeChecker"}
}
}
}
}
addKeyword功能:
ajv.addKeyword('stringTypeChecker', {
modifying: true,
validate: function(){
let foo = []
console.log(foo)
}
});
var valid = ajv.validate(schema, jsonResponse);
会截止日期的模式值,是'stringTypeChecker'参考?换句话说,我将如何改变模式,使用'stringTypeChecker'关键字? – eagercoder
“stringTypeChecker”应该是具有任何值的模式属性之一(例如'true') – esp
'stringTypeChecker'中的validate'方法有四个参数,但是在条件逻辑中不使用'dataPath'。这是我怎样调用'stringTypeChecker' - > '变种的validate = ajv.compile(JSON_SCHEMA);' '变种有效= ajv.validate(responseJson,responseJson [ “问题”],'' ” StartDate“);' 在引擎盖下我观察到validate方法需要所有四个参数。有没有办法改变validate函数中期望的参数数量,因为'validate'不使用'dataPath'? 谢谢您的准时回复。 – eagercoder