问题描述
table:
map:
0:
- 1
- 2
- 3
1:
- 1
- 2
- 3
- 4
2:
- 1
- 2
- 3
3:
- 1
- 2
- 3
我想将其映射到Map<Integer,List<Integer>> map
。使用@ConfigurationProperties("table")
很容易。但是我必须在没有Spring
的情况下进行操作。有想法吗?
解决方法
Spring使用 snakeyaml ,因此它已经在您的类路径中,您可以直接使用它。如果您需要更多信息,则项目页面为here。
根据您的情况,您可以执行以下操作:
Yaml yaml = new Yaml(new Constructor(Yourclass));
Yourclass yc = (Yourclass) yaml.load(yourfile);
Map<Integer,List<Integer>> map = yc.map;
,
感谢@Adam Arold的帮助。解决方案:
FileProperties.class
@Getter
@Setter
public class FileProperties {
private Map<String,List<String>> table;
}
MyClass
public class MyClass {
public FileProperties readYaml(String filename) {
Yaml yaml = new Yaml();
InputStream inputStream = this.getClass()
.getClassLoader()
.getResourceAsStream(filename);
return yaml.load(inputStream);
}
yaml
!!com.test.test.FileProperties
table:
key1:
- value1
- value12
- value13
key2:
- value11
- value12
- value15
key3:
- value11
- value12
- value15
请注意,!!com.test.test.FileProperties
包含有关在加载类时要使用的类的信息。