【发布时间】:2019-12-20 19:47:37
【问题描述】:
我正在开发一个 Java 项目,该项目使用 Jackson 库解析从外部 API 收到的 JSON 响应。响应中的一个字段有时以单个对象的形式出现,在某些情况下,它以对象数组的形式出现。所以我不确定我应该选择哪种数据类型来将此响应映射回 Java 对象。我应该如何正确地将这两种响应类型映射到 Java 对象?
在上面提到的可能重复中,响应始终是一个列表,但在我的情况下它不是。所以我不认为它是上述问题的重复。
以下是我收到的回复:
"configuration": {
"additionalServices": {
"type": "Standard DDOS IP Protection"
},
}
有时这就是我收到相同响应的方式:
"configuration": {
"additionalServices": [
{
"type": "Standard DDOS IP Protection"
},
{
"type": "Remote Management"
}
],
}
这就是我的 Java 映射现在的样子:
@JsonIgrnoreProperties(ignoreUnknown = true)
public class Configuration {
private List<AdditionalServices> additionalServices;
}
@JsonIgrnoreProperties(ignoreUnknown = true)
public class AdditionalServices {
private String type;
}
如果我使用下面的声明,那么它将只解析数组输出并为第一个响应抛出异常:
private List<AdditionalServices> additionalServices;
如果我使用下面的声明,那么它将只解析第一个响应并为第二个响应抛出异常:
private AdditionalServices additionalServices;
解析数据异常:
无法从 START_OBJECT 令牌中反序列化 java.util.ArrayList 的实例
【问题讨论】:
标签: java json jackson pojo jackson-databind