我有一个我想读入Map的yaml文件:
events:
key1: val1
key2: val2
key3: val3
public class EventGenerator {
private Map<String, String> events;
public Map<String, String> getEvents() {
return this.events;
}
public void setEvents() {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
try {
FileInputStream fis = new FileInputStream("file.yaml");
EventGenerator eventGenerator = mapper.readValue(fis, EventGenerator.class);
fis.close();
System.out.print(eventGenerator.getEvents());
} catch (IOException e) {
e.printStackTrace();
}
}
}
这段代码工作正常。但是当我将yaml文件的路径作为String参数传递时
public void setEvents(String filePath) {
// same code
FileInputStream fis = new FileInputStream(filePath)
// same code
}
我得到了一个例外
jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.String
任何人都可以解释这种行为吗?我在这里做错了什么?
答案 0 :(得分:0)
解决了这个问题。
Setter方法必须遵循严格的POJO标准,即setEvents(Map events) {this.events = events};
,并且必须采用另一种方法进行去异化。