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

JSON模式-不同对象的数组

司寇山
2023-03-14

我想知道如何为不同对象的数组指定JSON模式。这个线程给了我一半的答案,但当我有每种类型的对象的多个实例时,它就失败了。

下面是一个基于这里给出的示例的示例XML,但是重复了“product”对象:-

{
  "things": [
    {
      "entityType" : "Product",
      "name" : "Pepsi Cola",
      "brand" : "pepsi"
    },
    {
      "entityType" : "Product",
      "name" : "Coca Cola",
      "brand" : "coke"
    },
    {
      "entityType" : "Brand",
      "name" : "Pepsi Cola"
    }
  ]
}

下面的模式将只在每种类型都有单个实例时(例如,如果“product”只出现一次)验证上面的XML。

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "https://schemas.example.com/things",
  "title": "Things",
  "description": "Some things",
  "type": "object",
  "required": [
    "things"
  ],
  "properties": {
    "things": {
      "type": "array",
      "items": [
        {
          "type": "object",
          "required": [
            "entityType",
            "name"
          ],
          "properties": {
            "entityType": {
              "type": "string",
              "enum": [
                "Product"
              ]
            },
            "name": {
              "type": "string"
            },
            "brand": {
              "type": "string"
            }
          }
        },
        {
          "type": "object",
          "required": [
            "entityType",
            "name"
          ],
          "properties": {
            "entityType": {
              "type": "string",
              "enum": [
                "Brand"
              ]
            },
            "name": {
              "type": "string"
            }
          }
        }
      ]
    }
  },
  "additionalProperties": false
}

为了增加娱乐性,我不能使用像“anyof”这样的关键字,因为我要将这个模式嵌入到一个Swagger2.0文档中,而这些关键字不受支持。

谢谢,

共有1个答案

朱明知
2023-03-14

如果没有,你就倒霉了。您所能做的最好是使用一个涵盖所有选项的模式。这不是一个很好的解决方案,但总比没有好。

 类似资料:
  • 我有一个以以下格式返回json对象的响应: 我有一个Java类: 我想使用GSON将JSON对象映射到Java对象。 我尝试使用反序列化,它返回了JSON中嵌套值的。

  • 使用JSON Schema 7执行验证 是否可以使用json模式进行以下验证。 object 中的“prop” 属性是属性中的依赖值。 即只有“properties.name”存在,那么该值可以添加到“prop”数组中 注意: “属性”数组可以具有{name:}类型的任何对象 “name”可以有任何可能的字符串,我事先不知道 我一直在查阅文件,但能找到一个答案。 Json Schema中还不支持此

  • 问题内容: 如何使用Gson解析此JSON?我有一个具有多个对象类型的数组,但我不知道需要创建哪种对象来保存此结构。我无法更改json消息(我无法控制服务器)。 唯一起作用的类是 JSON消息 (请注意具有多个对象类型的数组。) 问题答案: 《 Gson用户指南》明确涵盖了以下内容: https://sites.google.com/site/gson/gson-user-guide#TOC-Se

  • 我有一个无序的JSON项数组。根据https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03#section-5.5规范,下面的json模式只有在数组中的对象以该顺序出现时才进行验证。我不想指定顺序,只需验证数组中的对象,而不管对象的顺序或数量如何。从规范中我似乎无法理解这是如何做到的。

  • 我将json传递给ObjectMapper。JSON字符串如下所示: 我的类如下所示: 这种行为是意料之中的吗?如果是,有什么解决办法? 更新:添加了类描述。

  • 假设我有一个数据帧,如下所示: 我想在时间分组一个重复的数据,并应用不同的函数到和(例如,求和和计算卷加权平均值)...我知道我能做到 将重复索引分组,然后使用或函数获取第一行或最后一行,但这并不是我真正想要的。 是否有方法对不同列中的值进行分组,然后应用不同的(由我编写的)函数?