gpt4 book ai didi

javascript - AJV 自定义关键字验证

转载 作者:行者123 更新时间:2023-11-29 19:05:56 27 4
gpt4 key购买 nike

我正在使用 AJV 库来验证我的 JSON 架构。我希望能够将 Startdate 验证为一个字符串。在不是字符串的情况下,应该转换为N/A。目前,它只能将 undefined 转换为 N/A

但是,在这些情况下它不会按预期工作:

  • null -> "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"
}
}
}
}
}

添加关键字函数:

ajv.addKeyword('stringTypeChecker', {
modifying: true,
validate: function(){
let foo = []
console.log(foo)
}
});

var valid = ajv.validate(schema, jsonResponse);

最佳答案

您不需要 coerceTypes 选项。

关键字需要是:

ajv.addKeyword('stringTypeChecker', {
modifying: true,
schema: false, // keyword value is not used, can be true
valid: true, // always validates as true
validate: function(data, dataPath, parentData, parentDataProperty){
if (typeof data != 'string' && parentData) // or some other condition
parentData[parentDataProperty] = 'N/A';
}
});

架构:

{
"type": "object",
"properties": {
"Issue": {
"type": "object",
"properties": {
"StartDate": {
"type": "string",
"default": "N/A",
"stringTypeChecker": true
}
}
}
}
}

关于javascript - AJV 自定义关键字验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42819408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com