1

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

带有对象的 JSON

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

带有集合的 JSON

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

1 回答 1

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

于 2012-10-11T23:19:47.437 回答