0

我正在 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 和效率作为关键并保留它的价值。我是编程新手,请帮帮我。

4

1 回答 1

0

使用诸如 jackson 之类的库来创建 json。您指定的属性的工作示例是here。几个基本步骤:

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

添加依赖项

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);
}
于 2018-03-11T09:44:51.337 回答