我需要从 JSON-Schema+Data 中获取必填字段的列表。
目前,我们正在使用 AJV使用 JSON Schema 在我们的表单中获取错误消息,效果很好。
我需要一种方法来获取所有必填字段(即使已填写),以便将那些带有 * 的字段标记为“必填”。必填字段可能会根据架构和数据组合而改变。
还尝试了黑客攻击 tv4提取所需的字段但没有成功。
请帮忙。
此类模式的示例:
{
"type": "object",
"required": [
"checkbox"
],
"properties": {
"checkbox": {
"type": "boolean"
},
"textbox": {
"type": "string"
}
},
"oneOf": [
{
"required": [
"textbox"
],
"properties": {
"checkbox": {
"enum": [
true
]
}
}
},
{
"properties": {
"checkbox": {
"enum": [
false
]
}
}
}
],
"additionalProperties": false
}
最佳答案
重读你的问题,做你想做的最简单的方法是
- 在页面加载时获取 Json 数据,
- 迭代 json 数据以删除有效值(参见示例 1),
- 调用 tv4.validateMultiple(data, schema),
- 检查结果对象并获取必填字段(参见示例 2)。
示例 1
for(let prop in data) {
if(data.hasOwnProperty(prop) {
//set value to null, -1, or some other universally bad value
data[prop]...value = null;
}
}
示例 2
let result = tv4.validateMultiple(data, schema);
let required = result.errors;
关于javascript - JSON Schema 提取所需字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065215/