所以,我有一个像这样的YAML文件:
- code: QWERTY1
name: qwerty-name
desc: a qwerty desc
- code: QWERTY2
name: qwerty-name-2
desc: a qwerty desc 2
我正在尝试使用MyObject
将其作为jackson
列表阅读。
我的Java代码如下所示:
public <T, K> List<K> readSerializedList(File f, Class<T> formatType, Class<K> classType) throws IOException{
ObjectMapper MAPPER = new ObjectMapper(new YAMLFactory());
try {
final T result = MAPPER.readValue(f, formatType);
List<K> myList = MAPPER.convertValue(result, new TypeReference<List<K>>() { });
return myList;
} catch (JsonParseException | JsonMappingException | InvalidKeyException e) {
throw new IOException(e);
}
}
我从另一个函数中调用它:
readSerializedList(new File("path/to/file/a.yaml"), List.class, MyObject.class)
我没有获得MyObject
列表,而是获得LinkedHashMap
。
如果我明确地将第4行更改为:
List<MyObject> myList = MAPPER.convertValue(result, new TypeReference<List<MyObject>>() { });
然后我获得了MyObject
的列表。
我需要那种我想要实现的概括,因为设计是这样的,readSerializedList()
应该能够从YAML读取我们告诉它的任何类型的列表。
有没有办法实现这个目标?我正在使用带有Java 8的Springboot。