我正在从Web服务中检索JSON。有时,JSON中的属性将作为对象返回,有时它是对象的数组。如何编写我要反序列化的Java类,以便使用Jackson ObjectMapper
正确地反序列化此属性?我可以使用ObjectMapper来帮助解决这个问题吗?
带对象的JSON :
"results": {
"account": {
"expiration": "2012-11-16"
}
}
带收集的JSON
"results": {
"account": [{
"expiration": "2012-11-16"
}]
}
答案 0 :(得分:4)
您需要将该属性标记为Java数组或Collection
,并启用功能ACCEPT_SINGLE_VALUE_AS_ARRAY:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature. ACCEPT_SINGLE_VALUE_AS_ARRAY);
ResultOb ob = mapper.readValue(jsonInput, ResultOb.class);
如果遇到单个JSON对象,则会将其视为单元素JSON数组。