Swagger codegen反序列化动态响应
Swagger codegen deserialize dynamic reponse
从我的 Java 后端,我正在使用另一个我不管理的后端,它的 API 定义不可用。我正在创建其服务的 OpenAPI 定义,并使用 Swagger Codegen 生成客户端。
有一个端点 returns 一个复杂的对象:
{
"total": 151,
"version": 4,
"dynamicItem1": [
"codeDynamicItem1",
293,
63700,
19,
"nameDynamicItem1",
"",
"",
"",
0,
-64
],
"dynamicItem2": [
"codeDynamicItem2",
237,
40000,
478,
"nameDynamicItem2",
"string1",
"string2",
"string3",
0,
0
]
}
在该对象中,total
和 version
始终存在,但在同一级别上有数百个动态项。在上面的示例中,密钥是可预测的,但实际上是一系列字母和数字,例如“245df921”。动态项始终是具有相同项数和相同预期位置的数组。
为了解析该对象,我使用 additionalProperties 因为我读到它是解析 hashmap 的正确方法,但似乎我没有正确应用它。
目前我的 OpenAPI 表示如下:
openapi: 3.0.2
info:
version: 1.0.0
title: title
description: description
paths:
/complexObject:
get:
responses:
'200':
description: "OK"
content:
application/json:
schema:
$ref: '#/components/schemas/Object'
components:
schemas:
Object:
type: object
properties:
total:
type: number
example: 151
version:
type: number
example: 4
additionalProperties:
type: array
items:
type: string
nullable: true
使用该实现可以正确返回 total
和 version
,但在响应对象中有一个 additionalProperties
属性具有空值。
我错过了什么?
additionalProperties
需要与 properties
.
处于同一级别
此外,由于这些动态数组是多种类型(字符串/整数),您需要 oneOf
来定义可能的项目类型。
components:
schemas:
Object:
type: object
properties:
total:
type: number
example: 151
version:
type: number
example: 4
additionalProperties: # <-----
type: array
items:
oneOf: # <-----
- type: string
nullable: true
- type: integer
从我的 Java 后端,我正在使用另一个我不管理的后端,它的 API 定义不可用。我正在创建其服务的 OpenAPI 定义,并使用 Swagger Codegen 生成客户端。
有一个端点 returns 一个复杂的对象:
{
"total": 151,
"version": 4,
"dynamicItem1": [
"codeDynamicItem1",
293,
63700,
19,
"nameDynamicItem1",
"",
"",
"",
0,
-64
],
"dynamicItem2": [
"codeDynamicItem2",
237,
40000,
478,
"nameDynamicItem2",
"string1",
"string2",
"string3",
0,
0
]
}
在该对象中,total
和 version
始终存在,但在同一级别上有数百个动态项。在上面的示例中,密钥是可预测的,但实际上是一系列字母和数字,例如“245df921”。动态项始终是具有相同项数和相同预期位置的数组。
为了解析该对象,我使用 additionalProperties 因为我读到它是解析 hashmap 的正确方法,但似乎我没有正确应用它。
目前我的 OpenAPI 表示如下:
openapi: 3.0.2
info:
version: 1.0.0
title: title
description: description
paths:
/complexObject:
get:
responses:
'200':
description: "OK"
content:
application/json:
schema:
$ref: '#/components/schemas/Object'
components:
schemas:
Object:
type: object
properties:
total:
type: number
example: 151
version:
type: number
example: 4
additionalProperties:
type: array
items:
type: string
nullable: true
使用该实现可以正确返回 total
和 version
,但在响应对象中有一个 additionalProperties
属性具有空值。
我错过了什么?
additionalProperties
需要与 properties
.
此外,由于这些动态数组是多种类型(字符串/整数),您需要 oneOf
来定义可能的项目类型。
components:
schemas:
Object:
type: object
properties:
total:
type: number
example: 151
version:
type: number
example: 4
additionalProperties: # <-----
type: array
items:
oneOf: # <-----
- type: string
nullable: true
- type: integer