gpt4 book ai didi

jsonschema - oneOf 的 JSON 架构自定义消息

转载 作者:行者123 更新时间:2023-12-02 03:14:19 26 4
gpt4 key购买 nike

有没有办法为 json 模式(tv4)设置自定义消息,以便在 oneOf 失败时 field ?

我看到大约一年前为自定义消息打开了一个问题 herehere但是有没有办法让这项工作适用于这样的事情?

{
"id": "code",
"description": "Schema for request.body - pin for logging into the bank",
"oneOf": [
{
"type": "string",
"pattern": "^.*\\S.*$"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"pattern": "^(encrypted|not_encrypted)$"
},
"value": {
"type": "string",
"pattern": "^.*\\S.*$"
}
}
}
],
"messages": {
"oneOf": "Code does not match schema"
}
}

而不是仅仅看到 Data does not match any schemas from \"oneOf\" ,你可以看到 Code does not match schema
[编辑]

我正在尽我所能阅读 tv4 代码,我看到了很多关于自定义错误消息和代码的信息,例如
defineError: function (codeName, codeNumber, defaultMessage) {
if (typeof codeName !== 'string' || !/^[A-Z]+(_[A-Z]+)*$/.test(codeName)) {
throw new Error('Code name must be a string in UPPER_CASE_WITH_UNDERSCORES');
}
if (typeof codeNumber !== 'number' || codeNumber%1 !== 0 || codeNumber < 10000) {
throw new Error('Code number must be an integer > 10000');
}
if (typeof ErrorCodes[codeName] !== 'undefined') {
throw new Error('Error already defined: ' + codeName + ' as ' + ErrorCodes[codeName]);
}
if (typeof ErrorCodeLookup[codeNumber] !== 'undefined') {
throw new Error('Error code already used: ' + ErrorCodeLookup[codeNumber] + ' as ' + codeNumber);
}
ErrorCodes[codeName] = codeNumber;
ErrorCodeLookup[codeNumber] = codeName;
ErrorMessagesDefault[codeName] = ErrorMessagesDefault[codeNumber] = defaultMessage;
for (var langCode in languages) {
var language = languages[langCode];
if (language[codeName]) {
language[codeNumber] = language[codeNumber] || language[codeName];
}
}
},

我可以通过一个简单的行 tv4.defineError('MY_CUSTOM_CODE_ERROR', 999999, "Hello World, you have a custom code error"); 添加我自己的错误和它自己的状态代码(通过这个函数) .如何将此错误与此特定 json 架构相关联?如果我完全在错误的地方,那么有人也请指出

最佳答案

我在 GitHub 上偶然发现了您的帖子,试图找到一种将自定义消息添加到“anyOf”、“oneOf”子句的解决方案。这是对我有用的:
here

tv4.setErrorReporter(function (error, data, schema) {
// Last component of schemaPath, which *most* of the time is the keyword!
var lsP = error.schemaPath.split('/').splice(-1);
return schema.messages && schema.messages[lsP];
});

你的架构定义是这样的:
{
"id": "code",
"description": "Schema for request.body - pin for logging into the bank",
"oneOf": [
{
"type": "string",
"pattern": "^.*\\S.*$"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"pattern": "^(encrypted|not_encrypted)$"
},
"value": {
"type": "string",
"pattern": "^.*\\S.*$"
}
}
}
],
"messages": {
"oneOf": "Code does not match schema"
}
}

关于jsonschema - oneOf 的 JSON 架构自定义消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37975596/

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