使用Jackson将属性文件中的列表反序列化为String

时间:2018-02-20 14:27:55

标签: java json jackson2

在我们的应用程序中,我们尝试使用Jackson读取平面属性文件,以使属性与我们的POJO相匹配。属性文件包含一个列表,但它似乎被反序列化为单个String。 这是我得到的错误:" 无法从VALUE_STRING令牌中反序列化java.util.ArrayList的实例"

这是输入文件的样子

test=Just a test 
status=A, B, C

也试过

status=[A, B, C]
status=["A", "B", "C"]

这是我们的POJO

@JsonIgnoreProperties(ignoreUnknown = true)
public class BasicPOJO {

  @JsonProperty("status")
  List<String> status;

  @JsonProperty("test")
  String test;

 //Getter and setter ..
}

这就是我们映射它的方式

public void test1() {
// Read configuration file from classpath
InputStream in = WMSApplicationProperties.class.getClassLoader()
    .getResourceAsStream("application.properties");

LOGGER.debug("Reading with JSON layout");
JavaPropsMapper mapper = new JavaPropsMapper();


try {
  JavaPropsSchema schema = JavaPropsSchema.emptySchema()
      .withoutPathSeparator();

  BasicPOJO myProperties = mapper.readerFor(BasicPOJO.class)
      .with(schema)
      .readValue(in);      
  } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
  }
}

知道列表被视为String的原因 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

看起来在读取属性文件(不是JSON格式)时指定列表的唯一方法是指定如下属性:

status.1=A
status.2=B
status.3=C

不幸的是格式:status = A,B,C是不可能的