在没有 Spring 的情况下读取和映射属性文件

问题描述 投票:0回答:2

我有一个

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
的情况下做到这一点。有什么想法吗?

java spring properties jackson properties-file
2个回答
4
投票

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;

有用的参考资料


0
投票

感谢@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
保存有关加载类时要使用的类的信息。

© www.soinside.com 2019 - 2024. All rights reserved.