使用 Spring Boot 读取 属性 文件生成 JSON 结构

Produce a JSON structure by reading a property file using SpringBoot

我正在 SpringBoot 中编写一个方法,该方法读取 属性 文件并通过端点生成 JSON。 我的 属性 文件如下所示:

Category.1=Quality=A,B,C,D
Category.2=Program=E,F,G
Category.3=Efficiency=H,I,J,K

我只需要读取从 Category 开始的值,我的 属性 文件可能包含其他数据。 JSON 应如下所示:

{
"Quality":[
  "A",
  "B",
  "C",
  "D"
],
"Program":[
  "E",
  "F",
  "G"
],
"Efficiency":[
  "H",
  "I",
  "J",
  "K"
]
}

我需要创建一个 REST 端点来获取这个 JSON 值。我知道如何读取 属性 文件并获取值。由于这个 属性 文件对我来说有点复杂,我需要将 Quality 、 Program 和 efficiency 作为关键,并保持其价值。我是编程新手,请帮助我。

使用 jackson 等库创建 json。具有您指定的属性的工作示例位于此处。几个基本步骤:

  1. 获取属性
  2. 创建一个空的json对象节点
  3. 迭代属性,获取您需要的属性(在您的情况下,键以 "Category" 开头)
  4. 拆分 = 上的每个有效 属性 值,将其分解为所需的 json 键和 csv 类别列表
  5. 从 (4) 中的每个列表中创建一个 json 数组
  6. 将这个数组添加到(2)中的节点(4)中的键

添加依赖项

compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.4'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.4'

添加到您的项目中,以便示例运行。

public static void main(String... args) throws IOException {
    Properties p = new Properties();
    p.load(Test.class.getResourceAsStream("/myfile.properties"));

    ObjectNode node = JsonNodeFactory.instance.objectNode();

    String prefix = "Category.";
    String delimiter = ",";

    p.forEach((k, v) -> {
        String propKey = k.toString();
        if (propKey.startsWith(prefix)) {
            String[] propVal = v.toString().split("=");
            ArrayNode array = JsonNodeFactory.instance.arrayNode();
            for (String arrVal : propVal[1].split(delimiter)) {
                array.add(arrVal);
            }
            node.set(propVal[0], array);
        }
    });

    System.out.println(node);
}