【发布时间】:2018-08-17 08:09:56
【问题描述】:
我正在搜索可以转换包含嵌套对象(如:address.city、address.country)的 csv 数据的 java 库,以相应地转换为带有嵌套对象的 json 数据。 下面是我正在使用的java代码:
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();
System.out.println(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));
这是我得到的输出:
[ {
"studentName" : "Foo",
"Age" : "12",
"address__city" : "newyork",
"address__address1" : "North avenue",
"address__zipcode" : "123213",
"subjects__name" : "English",
"subjects__marks" : "40"
}, {
"studentName" : "ABcd",
"Age" : "25",
"address__city" : "achi",
"address__address1" : "Morh",
"address__zipcode" : "27400",
"subjects__name" : "History",
"subjects__marks" : "50"
} ]
这是预期的输出:
{
"studentName": "Foo",
"Age": "12",
"address":{
"city" : "newyork",
"address1": "North avenue",
"zipcode" : "123213"
},
"subjects": [
{
"name": "English",
"marks": "40"
},
{
"name": "History",
"marks": "50"
}
]
}
这是输入 csv:
"studentName","Age","address__city","address__address1","address__zipcode","subjects__name","subjects__marks"
"Foo","12","newyork","North avenue","123213","English","40"
"","25","achi","Morh","2400","History","
【问题讨论】:
-
感谢@shas 的时间,但我仍然得到与以前相同的输出......我没有得到预期的输出......