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

Swagger解析具有未定义属性的关联数组

慕弘伟
2023-03-14

我试图弄清楚如何让Swagger解析一个带有未定义数量的值的关联数组。

我有类似的案例,不同的是这些其他案例是完全规则的(我事先知道所有属性的名称)。然而,在这种情况下,我可能不知道(实际上我不想知道)哪些可能是值的名称。

JSON的一个例子,它有一个带有未定义数量的语言代码的关联数组。每个语言代码键都有一组未定义的翻译,每个翻译都有一个键和值。在这种情况下,“描述”和“步行访问”是翻译的关键。但是可能还有其他人,我不想知道所有的人。它应该是动态的。

 {
  "ca": {
    "DESCRIPTION": "Catalan description",
    "ACCESS_ON_FOOT": "Catalan Access on foot"
  },
  "en": {
    "DESCRIPTION": "English Description",
    "ACCESS_ON_FOOT": "English Access on foot"
  },
  "es": {
    "DESCRIPTION": "Spanish Description",
    "ACCESS_ON_FOOT": "Spanish Access on foot"
  }
}

问题是我不知道如何将这个未定义的语言代码示例指定为对象的值。

在我的另一个例子中,我使它很容易工作,因为我知道我有哪些值。我当然可以添加“ca”、“en”和“es”作为数组类型的属性。但是,如果我添加语言,我应该回到Swagger规范并重新制定,我的想法是使添加新语言的过程与API规范完全分离。

有没有办法在Swagger 2.0中定义一组未确定的属性?

更新

看起来这可能是我必须解析这个JSON的问题的一个可能的解决方案:

Translations:
type: "object"
additionalProperties:
  type: object
  additionalProperties:
    type: string

< code > additional properties 选项似乎是关联数组的正确选项。至少根据规范:https://swagger . io/docs/specification/data-models/dictionary/

Swagger编辑器(https://editor.swagger.io/)向我显示了与我描述的相同的JSON格式,但是我仍然在生成的客户机中得到一个空输出。

共有1个答案

羊舌兴德
2023-03-14

在做了更多的研究之后,在我看来,关联数组在Swagger 2.0中能否工作还不清楚。我很想成功。最后,我选择了另一种方法,让我的APIendpoint返回一个稍微不同的结果。

我有一个二维的关联数组并存储了值。

现在我有一个具有3个属性的一维数组:

Translations:
type: "object"
properties:
  language_code:
    type: "string"
  type:
    type: "string"
  content:
    type: "string"

由于翻译在定义集中,我可以轻松地在endpoint的响应中包含一个翻译数组,如下所示:

responses:
    200:
      description: "successful operation"
      schema:
        type: "array"
        items:
          $ref: "#/definitions/Translations"

这就像一个魅力。

斯威格似乎很有效,只要你没有太多自由的情况。当这种情况发生时,你需要改变主意,找到不同的选择来做事。

附注:首先从你的API定义开始,(就像你做测试然后编码一样)。所以首先是API定义,然后是测试,然后是代码。

 类似资料:
  • 我已经有了一个工作中的swagger文档,它使用swagger UI项目生成文档,但我遇到了一个小问题。 Mongoose支持的数据类型,这基本上是一个可以包含任何内容的非结构化对象。但是,根据Swagger规范,属性的的唯一可能值是、、、和。我在留档、Google或GitHub上Swagger-Spec项目的开放问题中找不到任何允许混合数据类型的内容。 在Swagger-Spec留档中,它们定义

  • 问题内容: 我正在借助以下方法设置新的React:https : //github.com/facebookincubator/create-react- app 但是,我遇到了一个棉绒问题。我收到以下掉毛错误。 这是导致问题的代码: 我试着使用react / prop-types规则,但无济于事。 问题答案: 根据这个问题发表评论。 这似乎是因为您在安装时仅应使用create-react- ap

  • 试图向OpenLDAP添加一个新属性,但总是碰壁。我正在尝试向架构添加ipPhone属性,因为我不能在默认的telephoneNumber属性中包含*数字。 下面是我的LDIF文件,用于创建新属性并将其与objectClass类似。 我已经测试和谷歌了几个小时,但一直无法解决这个问题或找出我错过了什么!

  • 我在JPA中使用Micronaut数据,并且有两个实体。第一个是< code >配方: 第二个是,它指的是 : 现在我想在API中为DTO提供属性,但不提供整个实体,因为它包含MonyToOne和OneToMany关系,在这种情况下不需要。因此,我为此创建了投影 DTO: 并将< code>listAll()方法添加到< code > parse error repository 中: 但似乎Mi

  • 我定义了具有@OneToOne双向关系的实体。 关系的所有者站点(子类): 其他站点(父类): 当我试图坚持有子集的父母(不坚持),然后我得到了例外 TransientPropertyValueException:对象引用未保存的临时实例-在刷新之前保存临时实例 这看起来可以理解。 但当我定义具有双向一对一/多对一关联的实体时,如: 此关系的所有者站点: 关系的另一面: 并尝试持久化具有子集合集(

  • 创建Spring Boot cloud config应用程序时出现以下错误。有什么帮助吗?