【问题标题】:Can a JSON Validator inspect candidate json for type definitions to validate itself?JSON 验证器可以检查候选 json 的类型定义以验证自身吗?
【发布时间】:2017-08-01 15:16:06
【问题描述】:

我有一个支持自定义结构的 DML,例如下面的“customType1”,可用于定义属性列表的类型:

{
 "types": {
    "customType1" : {
      "var1" : "string",
      "var2" : "int"
    }
    .
    .
    .
 },
 "properties": {
   "prop1" : {
     "type": "customType1",
     "value": {
     "var1" : "Hello",
     "var2" : 123
    },
   "prop2" : {
     "type" : "String",
     "value" : "www.google.com"
    }
    .
    .
    .
 }
}

是否可以编写一个 JSON Schema 来评估 prop1 以根据 customType1 中定义的结构对其进行验证? types 中指定的自定义类型的描述不会先验知道,只有在评估时才能知道。

如果这超出了 JSON Schema 规范的能力,还有其他关于如何验证它的建议吗?

【问题讨论】:

    标签: json schema jsonschema json-schema-validator


    【解决方案1】:

    您可以使用 JSON 参考来做到这一点:

    {
     "types": {
        "customType1" : {
          "var1" : "string",
          "var2" : "int"
        }
        .
        .
        .
     },
     "properties": {
       "prop1" : {
         "$ref" : "#/types/customType1"
        },
       "prop2" : {
         "type" : "String",
         "value" : "www.google.com"
        }
        .
        .
        .
     }
    }
    

    它是一个“指针”,表示属性模式的位置。

    (注意:在 JSON Schema 中,我们通常使用键“定义”而不是“类型”)。

    【讨论】:

    • 在此 DML 中,将由模式验证的 JSON 包含随后在同一 json 中的其他位置使用的定义。事先不知道将定义哪些“类型”,因此我编写的架构无法直接访问它
    • 我在问题中添加的是示例 JSON,而不是模式尝试!
    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 2017-09-12
    • 2014-05-18
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多