具有可变键的对象 Arraylist 的 Jackson 序列化
Jackson Serialization of an Arraylist of objects with variable key
我正在使用几个不同的 POJO 来生成 swagger API 规范。但是,我在尝试正确格式化 JSON 时遇到问题。
目前的响应如下所示:
结果JSON
{
"parameters": {
"regionid": {
"description": "Region ID for Regional Assignment",
"required": false,
"type": "integer",
"format": "int32"
},
"timeperiodid": {
"description": "School year time period",
"required": false,
"type": "integer",
"format": "int32"
}
}
}
生成 Yaml
parameters:
regionid:
description: Region ID for Regional Assignment
required: false
type: integer
format: int32
timeperiodid:
description: School year time period
required: false
type: integer
format: int32
而不是正确的格式(对象的 ArrayList):
预计JSON
{
"parameters": [
{
"regionid": {
"description": "Region ID for Regional Assignment",
"required": false,
"type": "integer",
"format": "int32"
}
},
{
"timeperiodid": {
"description": "School year time period",
"required": false,
"type": "integer",
"format": "int32"
}
}
]
}
预期 Yaml
parameters:
- regionid:
description: Region ID for Regional Assignment
required: false
type: integer
format: int32
- timeperiodid:
description: School year time period
required: false
type: integer
format: int32
方法 Class 包装和 returns 参数:
public class Method {
@JsonIgnore
private String method;
private HashMap<String, Parameter> parameters;
参数对象Class:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Parameter {
@JsonIgnore
private String name;
private String in;
private String description;
private boolean required;
private String type;
private String format;
我认为你应该更改这一行:
private HashMap<String, Parameter> parameters;
到
private HashMap<String, Parameter[]> parameters;
因为您将 "regionid" 映射到一组参数,而不仅仅是一个参数。
您的 parameters
对象中有一个数组。该数组中的对象类型看起来像 key/Parameter,因此您需要将 Map<String, Parameter>
建模为数组项。
我正在使用几个不同的 POJO 来生成 swagger API 规范。但是,我在尝试正确格式化 JSON 时遇到问题。
目前的响应如下所示:
结果JSON
{
"parameters": {
"regionid": {
"description": "Region ID for Regional Assignment",
"required": false,
"type": "integer",
"format": "int32"
},
"timeperiodid": {
"description": "School year time period",
"required": false,
"type": "integer",
"format": "int32"
}
}
}
生成 Yaml
parameters:
regionid:
description: Region ID for Regional Assignment
required: false
type: integer
format: int32
timeperiodid:
description: School year time period
required: false
type: integer
format: int32
而不是正确的格式(对象的 ArrayList):
预计JSON
{
"parameters": [
{
"regionid": {
"description": "Region ID for Regional Assignment",
"required": false,
"type": "integer",
"format": "int32"
}
},
{
"timeperiodid": {
"description": "School year time period",
"required": false,
"type": "integer",
"format": "int32"
}
}
]
}
预期 Yaml
parameters:
- regionid:
description: Region ID for Regional Assignment
required: false
type: integer
format: int32
- timeperiodid:
description: School year time period
required: false
type: integer
format: int32
方法 Class 包装和 returns 参数:
public class Method {
@JsonIgnore
private String method;
private HashMap<String, Parameter> parameters;
参数对象Class:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Parameter {
@JsonIgnore
private String name;
private String in;
private String description;
private boolean required;
private String type;
private String format;
我认为你应该更改这一行:
private HashMap<String, Parameter> parameters;
到
private HashMap<String, Parameter[]> parameters;
因为您将 "regionid" 映射到一组参数,而不仅仅是一个参数。
您的 parameters
对象中有一个数组。该数组中的对象类型看起来像 key/Parameter,因此您需要将 Map<String, Parameter>
建模为数组项。