我试图找出如何实现Swagger解析具有未定义数值的关联数组。
我有类似的情况,区别在于这些其他情况是完全正常的(我事先知道所有属性'名称)。但是,我可能不知道(实际上我不想知道)这些可能是这些情况下值的名称。
具有未定义语言代码数的关联数组的JSON示例。每个语言代码键都有一个未定义的翻译数组,每个翻译都有一个键和一个值。 "说明"和" ACCESS_ON_FOOT"在这种情况下是翻译的关键。但是可能还有其他人而且我不想知道所有这些。它应该是动态的。
{
"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
additionalProperties
选项似乎是关联数组的正确选项。至少根据规范:
https://swagger.io/docs/specification/data-models/dictionaries/
Swagger编辑器(https://editor.swagger.io/)向我展示了我描述的相同JSON格式,但我仍然在生成的客户端中获得空输出。
答案 0 :(得分:0)
在做了更多的研究之后,我似乎不清楚关联数组在Swagger 2.0中有效。我很想做这个工作。最后,我选择了另一种替代方案,并使我的API端点返回略有不同的结果。
我有一个带有2个维度的关联数组,并存储了值。
现在我有一个包含3个属性的一维数组:
Translations:
type: "object"
properties:
language_code:
type: "string"
type:
type: "string"
content:
type: "string"
由于Translations在定义集中,我可以轻松地在端点的响应中包含一个Translations数组,如:
responses:
200:
description: "successful operation"
schema:
type: "array"
items:
$ref: "#/definitions/Translations"
这就像一个魅力。
只要您没有太多自由的情况,Swagger似乎工作得非常好。当发生这种情况时,你需要改变主意,找到另一种做事的方法。P.S。首先使用您的API定义(就像您对测试和代码所做的那样)。首先是API定义,然后测试然后编码。