【问题标题】:Produce a JSON structure by reading a property file using SpringBoot通过使用 Spring Boot 读取属性文件生成 JSON 结构
【发布时间】:2018-03-11 09:01:06
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    使用诸如 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);
    }
    

    【讨论】:

    • 感谢@William Burnham 的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2017-01-07
    • 2013-02-07
    • 2018-10-16
    相关资源
    最近更新 更多