使用 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。具有您指定的属性的工作示例位于此处。几个基本步骤:
- 获取属性
- 创建一个空的json对象节点
- 迭代属性,获取您需要的属性(在您的情况下,键以 "Category" 开头)
- 拆分
=
上的每个有效 属性 值,将其分解为所需的 json 键和 csv 类别列表
- 从 (4) 中的每个列表中创建一个 json 数组
- 将这个数组添加到(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);
}
我正在 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。具有您指定的属性的工作示例位于此处。几个基本步骤:
- 获取属性
- 创建一个空的json对象节点
- 迭代属性,获取您需要的属性(在您的情况下,键以 "Category" 开头)
- 拆分
=
上的每个有效 属性 值,将其分解为所需的 json 键和 csv 类别列表 - 从 (4) 中的每个列表中创建一个 json 数组
- 将这个数组添加到(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);
}