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

具有动态键值哈希映射的Swagger复杂响应模型

单展
2023-03-14

我正在努力使用swagger的语法来描述响应类型。我试图建模的是一个带有动态键和值的哈希映射。这是允许本地化所必需的。语言可能不同,但应始终提供英语。

在JSON中,响应如下所示:

{
  id: "1234",
  name: {
    en: "english text",
    de: "Deutscher Text"
  }
}

我的第一次尝试是这样的,但我不知道如何为这个名字写部分。AdditionalProperties似乎是一把钥匙,但我无法把头缠在它身上。另外,对英语文本的要求对我来说是一个谜,在这个语法中,这个例子似乎也不像预期的那样工作。它在UI中生成一个空的$folded:。

delayReason:
  type: object
  properties:
    id:
      type: string
      description: Identifier for a delay reason.
    name:
      type: object
      additionalProperties: 
        type: string
  required: [id, name]
  example:
    id: 123
    name: 
      en: english text
      de: Deutscher Text

这也没有线索表明结果将有一个语言代码作为键,而文本作为散列映射的值。

共有1个答案

常朗
2023-03-14

AdditionalProperties的用法是正确的,模型也是正确的。

在Swagger/OpenAPI中,hashmap键被假定为字符串,因此键类型没有显式定义。AdditionalProperties定义hashmap值的类型。所以,这个模式

type: object
additionalProperties: 
  type: string

定义字符串到字符串的映射,例如:

{
  "en": "English text",
  "de": "Deutscher Text"
}

如果需要字符串到整数的映射,例如:

{
  "en": 5,
  "de": 3
}

您可以将additionalproperties定义为具有值类型integer:

type: object
additionalProperties: 
  type: integer

en定义为HashMap中的必需键:

type: object
properties:
  en:
    type: string
required: [en]
additionalProperties: 
  type: string
definitions:
  delayReason:
    type: object
    properties:
      id:
        type: string
        description: Identifier for a delay reason.
      name:
        type: object
        description: A hashmap with language code as a key and the text as the value.
        properties:
          en:
            type: string
            description: English text of a delay reason.
        required: [en]
        additionalProperties: 
          type: string
    required: [id, name]
    example:
      id: '123' # Note the quotes to force the value as a string
      name: 
        en: English text
        de: Deutscher Text

这也没有线索表明结果将有一个语言代码作为键,而文本作为散列映射的值。

类似的事情可以在描述中口头记录。

这个例子似乎也没有达到预期的效果。它在UI中生成一个空的$folded:。

不确定您的原始规范有什么问题,但上面的规范是有效的,在Swagger编辑器中看起来很好。

 类似资料:
  • 我可以有一个哈希图在Java看起来像这样吗? 我的问题和这里的类似问题 我是Java新手。所以我想知道的是,如果我需要上面这样的东西,如果它无效,什么是最好的数据结构?

  • 我会从我想达到的目标开始 意图 该软件在for循环中解析XML数据。处理数据的 for 循环将持续到 50(因为我得到了 50 个不同的结果)。我最初所做的是,-方法解析整个XML数据并将其保存到TextViews中并显示它。但现在我想添加一个启动画面,只要数据加载就会显示。 XML文件像任何其他普通XML文件一样构建,因此当我通过for循环时,键总是相同的,但值不同。 方法 我已经做的是创建一个

  • 对于使用Java Spring RestTemplate完成的HTTP请求,我得到一个JSON键值对对象的响应,该对象带有动态键,如下所示。 回应: 如何将响应对象映射到POJO或映射? 我使用RestTemplate如下所示。

  • 问题内容: 我有需要检查的情况。我有一个名为: 因为该键本身不存在,所以抛出。如果我检查 由于引发了另一个。如何测试地图中的键不存在?我知道该方法应该处理它,但这不在我的控制之下。] 问题答案: 即使现在我也因为.get引发异常而得到nullpoiner 如果只有一行,并且确定它抛出异常,则唯一的可能性可能是null。

  • 问题内容: Freemarker有两个集合数据类型,即列表和哈希图。有没有一种方法可以像对列表一样遍历哈希图键? 因此,如果我有一个带有数据的变量,则可以说: 我想用其值打印所有用户的属性。这是无效的,但目标很明确: 问题答案: 编辑: 不要在FreeMarker 2.3.25及更高版本中使用此解决方案,尤其是不要使用。查看其他答案。 您使用内置的按键功能,例如,这应该可以工作:

  • 输入是一个哈希映射,比如 我想写一个方法,返回类型A的列表,其中有键,值属性与字符串类型,和键值从hashmap。 如何让它成为现实?