当前位置: 首页 > 知识库问答 >
问题:

Json元模式:如何限制另一个Json模式具有嵌套对象

解沈义
2023-03-14
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://example.com/product.schema.json",
  "title": "test",
  "description": "A product from Acme's catalog",
  "type": "object",
  "properties": {
    "productId": {
      "description": "Outer",
      "type": "object",
      "properties": {
        "lineId": {
          "description": "Outer",
          "type": "object"
        }
      }
    }
  }
}

由于productid是一个对象,并且它有另一个对象lineidproductid只能有字符串或数字字段,而不能有对象,如何扩展元化学以强制执行此操作。感谢任何帮助

共有1个答案

戚繁
2023-03-14

您的问题有一些版本不一致,但我假设draft-04,因为您使用的验证器只支持draft-04。如果您需要为其他草案这样做,这个过程将类似于通过草案-07。2019-09年草案会更复杂。

  1. 复制draft-04元模式
  2. 删除子架构中不允许的任何内容,包括“object”类型和与对象相关的任何关键字,如属性
  3. ID更改为惟一的内容,如https://my-project.com/nested-meta-schema.
  4. 复制draft-04元模式的另一个副本
  5. 将所有递归引用({“$ref”:“#”})替换为对刚刚创建的架构的引用({“$ref”:“https://my-project.com/nested-meta-schema”})
  6. 将第二个模式的ID更改为惟一的内容,如https://my-project.com/flat-meta-schema.
  7. 对于要根据元模式验证的任何模式,请将$schema更改为您给出的第二个元模式的id。

请注意,并非所有实现都支持自定义元模式,因此您的里程可能会有所不同。

 类似资料:
  • 我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根

  • 下面是使用的json文件(tasks.json) 错误:com.intuit.karate.exception.KarateException:javascript评估失败:字符串,引用错误:第1行中未定义“字符串” 我尝试了多种方法,如:obj1:“#(^schema)”,obj1:“#对象schema” 但无法解决问题。

  • 我收到了来自Kafka的JSON字符串,需要由PySpark处理。字符串如下所示: 我的计划是将字符串分成JSON字段。为此,我定义了以下模式: 但是,使用此架构会导致以下错误: 但是,如果我使用没有嵌套字段的模式(如下所示),我可以解析: 我的目标是得到这样的输出: 我想在这方面得到一些帮助。现在我可以得到除嵌套结构之外的所有字段。 我使用的模式如下: Adam提到的模式适用于这个特定的字符串。

  • 有没有办法用JSON schema表达对同一个JSON文档中另一个元素的引用?标题可能有点混乱,但我不是在寻找< code>"$ref"属性,它引用了另一个类型,但我很好奇,是否有一种方法可以使用指定的字段引用文档中的另一个元素。我知道对xml文档强制使用xsd是可能的,但不确定JSON。 我想做这样的事情: 我一直在研究v4的模式定义:http://json-schema.org/draft-0

  • DF1-带数据的平面数据帧 DF2-具有相同列名的空数据帧 DF2架构代码: 带有来自DF1的数据的DF2将是最终输出。 需要为复杂模式的多列执行此操作并使其可配置。必须在不使用case类的情况下执行此操作。 方法#1-使用架构。字段。映射到映射DF1- 方法#2-创建一个新的DF并定义数据和模式? 方法#3-使用zip和map转换定义“select col as col”查询。。不知道这是否适用