【发布时间】:2018-03-28 07:53:21
【问题描述】:
我的任务是读取一个 CSV 文件,然后执行一些逻辑,然后为此创建一个 JSON。
在创建 JSON 之前,我有点坚持所需的逻辑,我需要针对 SK 将 Max PR VALUE 设置为所有相同 SK 的 PR。
我的要求:
CSV:
SK,VR,ST,PR
1000,1000-Q1,10,187
1000,1000-Q2,20,925 // MAX PR against SK
1001,1001-Q1,10,112
1001,1001-Q2,30,120 // MAX PR against SK
注意:针对 SK 的最大 PR 将始终位于其 SK 的最后一行。
我必须在这里读取 CSV 并且需要编写如下 JSON 数据:
[
{
"SK": "1000",
"VR": "1000-Q1",
"ST": "10",
"PR": "925"
},
{
"SK": "1000",
"VR": "1000-Q2",
"ST": "20",
"PR": "925"
},
{
"SK": "1001",
"VR": "1001-Q1",
"ST": "10",
"PR": "120"
},
{
"SK": "1001",
"VR": "1001-Q2",
"ST": "30",
"PR": "120"
}
]
编辑:
代码
File input = new File("input.csv");
File output = new File("output.json");
CsvSchema csvSchema = CsvSchema.builder().setUseHeader(true).build();
CsvMapper csvMapper = new CsvMapper();
// Read data from CSV file
List<Object> readAll = csvMapper.readerFor(Map.class).with(csvSchema).readValues(input).readAll();
ObjectMapper mapper = new ObjectMapper();
// Write JSON formated data to output.json file
mapper.writerWithDefaultPrettyPrinter().writeValue(output, readAll);
// Write JSON formated data to stdout
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(readAll));
【问题讨论】:
-
我看不到你编写的代码
-
如果您在 StackOverflow 寻求帮助,强烈建议提供 minimal reproducible example
-
@USM 我在下面提出了一个答案
标签: java json spring-boot apache-commons-csv