JSON 具有有时为数组的字段的对象
JSON Objects with Field that is sometimes an Array
问题:访问请求目标有时是单个目标,有时是数组
问题:如何根据找到的内容使 Jackson 反序列化为单个目标或数组?
单个目标JSON
"access_request": {
"targets": {
"target": {
"@type": "ANY",
"id": 1189118
}
}
}
目标数组JSON
"access_request": {
"targets": {
"target": [
{
"@type": "Object",
"id": 1189167,
"object_name": "OUTSIDE",
"object_type": "acl",
"object_details": "2.2.2.2",
"management_id": 29,
"management_name": "ace2"
},
{
"@type": "Object",
"id": 1189168,
"object_name": "ONRAMP",
"object_type": "acl",
"object_details": "1.1.1.1",
"management_id": 29,
"management_name": "ace1"
}
]
}
}
'Target' POJO:
@JsonPropertyOrder({
"target"
})
@Generated("jsonschema2pojo")
public class 目标实现可序列化
{
@JsonProperty("target")
private Target target = new Target();//How can I make Jackson deserialize to either a Single Target or an Array<Target> depending on what is found?
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
.
.//Getters, Setters
.
}
使用单个列表类型的字段,并激活功能ACCEPT_SINGLE_VALUE_AS_ARRAY
YourTargetClass result = mapper.reader(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
.forType(YourTargetClass.class)
.readValue(json);
问题:访问请求目标有时是单个目标,有时是数组
问题:如何根据找到的内容使 Jackson 反序列化为单个目标或数组?
单个目标JSON
"access_request": {
"targets": {
"target": {
"@type": "ANY",
"id": 1189118
}
}
}
目标数组JSON
"access_request": {
"targets": {
"target": [
{
"@type": "Object",
"id": 1189167,
"object_name": "OUTSIDE",
"object_type": "acl",
"object_details": "2.2.2.2",
"management_id": 29,
"management_name": "ace2"
},
{
"@type": "Object",
"id": 1189168,
"object_name": "ONRAMP",
"object_type": "acl",
"object_details": "1.1.1.1",
"management_id": 29,
"management_name": "ace1"
}
]
}
}
'Target' POJO:
@JsonPropertyOrder({
"target"
}) @Generated("jsonschema2pojo") public class 目标实现可序列化 {
@JsonProperty("target")
private Target target = new Target();//How can I make Jackson deserialize to either a Single Target or an Array<Target> depending on what is found?
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
.
.//Getters, Setters
.
}
使用单个列表类型的字段,并激活功能ACCEPT_SINGLE_VALUE_AS_ARRAY
YourTargetClass result = mapper.reader(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
.forType(YourTargetClass.class)
.readValue(json);