杰克逊反序列化间歇性有阵列的JSON

时间:2012-10-11 19:47:52

标签: java json jackson

我正在从Web服务中检索JSON。有时,JSON中的属性将作为对象返回,有时它是对象的数组。如何编写我要反序列化的Java类,以便使用Jackson ObjectMapper正确地反序列化此属性?我可以使用ObjectMapper来帮助解决这个问题吗?

带对象的JSON

"results": {
  "account": {
     "expiration": "2012-11-16"
  }
}

带收集的JSON

"results": {
  "account": [{
    "expiration": "2012-11-16"
  }]
}

1 个答案:

答案 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数组。