javascript - JSON Schema 提取所需字段

标签 javascript json jsonschema ajv tv4

我需要从 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
}

最佳答案

重读你的问题,做你想做的最简单的方法是

  1. 在页面加载时获取 Json 数据,
  2. 迭代 json 数据以删除有效值(参见示例 1),
  3. 调用 tv4.validateMultiple(data, schema),
  4. 检查结果对象并获取必填字段(参见示例 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/

相关文章:

javascript - 错误 : Blocked due to MIME type (“text/html” ) mismatch (X-Content-Type-Options: nosniff)

javascript - 使用JQuery点击类 ".x"的div时触发事件

javascript - dateJS 正在覆盖变量

javascript - (Node.js) 如何获取存储在服务器中的二进制文件的 URL?

xml - JSON 架构与 XML 架构

java - 在嵌套数据中查找空值和空字符串(Java)

c# - Newtonsoft JSON 架构忽略反序列化验证

javascript - 在具有 maxLength 的 JSON 模式中将属性设置为 "string"或 null

javascript - 无法从 json 记录集中打印表中的变量

java - Jackson:生成带有引用的模式