通过使用SpringBoot

时间:2018-03-11 09:01:06

标签: java json rest spring-boot property-files

我在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值。我知道如何读取属性文件并获取值。由于这个属性文件对我来说有点复杂,我需要将质量,程序和效率作为关键并保持其价值。我是编程新手,请帮助我。

1 个答案:

答案 0 :(得分:0)

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

  1. 获取属性
  2. 创建一个空的json对象节点
  3. 迭代属性,获取所需的属性(在您的情况下以“Category”开头的键)
  4. 拆分=上的每个有效属性值,将其分解为所需的json密钥和csv类别列表
  5. 在(4)
  6. 中的每个列表中创建一个json数组
  7. 使用(4)
  8. 中的键将此数组添加到(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);
    }