我有一个
property.yaml
文件:
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,因此它已经在您的类路径中,您可以开箱即用。如果您需要更多信息,项目页面位于此处。
在你的情况下,你可以这样做:
Yaml yaml = new Yaml(new Constructor(Yourclass.class, new LoaderOptions()));
Yourclass yc = (Yourclass) yaml.load(yourfile);
Map<Integer, List<Integer>> map = yc.map;
有用的参考资料:
感谢@Adam Arold 的帮助。解决方案:
文件属性.class
@Getter
@Setter
public class FileProperties {
private Map<String, List<String>> table;
}
我的班级
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
保存有关加载类时要使用的类的信息。