杰克逊:如何将字符串读作列表?

时间:2015-05-16 04:28:53

标签: java json jackson

我们当前的课程类似于

public class Attributes {

  private String mapping;

  .....

{
  "mapping": "displayName",
  .....

这很好用并运送给客户。

我们将JSON转换为Attribute类的方式是

JSON.readValue(jsonFile, Attribute.class);

最近要求说,mapping将是List<String>而不是String

首先,我想到的快速更改是将mapping更改为List<String>,但这会破坏现有客户端。

我通过编写

的测试来尝试
assertEquals("displayName", configuration.getMapping().get(0));  

它失败了

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token

问题
如何告诉JacksonString读作列表?它将是1项目的列表,但将向后兼容。

由于

1 个答案:

答案 0 :(得分:2)

答案是Can not deserialize instance of java.util.ArrayList out of VALUE_STRING

objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);