我在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值。我知道如何读取属性文件并获取值。由于这个属性文件对我来说有点复杂,我需要将质量,程序和效率作为关键并保持其价值。我是编程新手,请帮助我。
答案 0 :(得分:0)
使用jackson等库创建json。具有您指定的属性的工作示例在此处。一些基本步骤:
=
上的每个有效属性值,将其分解为所需的json密钥和csv类别列表添加依赖项
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);
}