我正在读取包含一些字符串和一些整数列的CSV文件,并将其转换为JSON。在进行这种转换时,所有字段和值似乎都用双引号引起来。但是我希望整数值不要有双引号。
我正在使用Jackson Fasterxml,这是我的代码段
File input = new File("/Users/name/1.csv");
File output = new File("/Users/name/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();
mapper.configure(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS, true);
// Write JSON formated data to output.json file
mapper.writerWithDefaultPrettyPrinter().writeValue(output, readAll);
这是我的预期输出:输出,请注意编号和预算上没有双引号
[ {
"id" : 120,
"name" : "Name 1",
"type" : "type1",
"budget" : 100
},
{
"id" : 130,
"name" : "Name 2",
"type" : "type2",
"budget" : 200
},
{
"id" : 140,
"name" : "Name 3",
"type" : "type2",
"budget" : 130
},
{
"id" : 150,
"name" : "Name 4",
"type" : "type4",
"budget" : 400
}
}]
但是,所有字段和值在转换后都带有引号
[ {
"id" : "120",
"name" : "Name 1",
"type" : "type1",
"budget" : "100"
},
{
"id" : "130",
"name" : "Name 2",
"type" : "type2",
"budget" : "200"
},
{
"id" : "140",
"name" : "Name 3",
"type" : "type2",
"budget" : "130"
},
{
"id" : "150",
"name" : "Name 4",
"type" : "type4",
"budget" : "400"
}
}]
答案 0 :(得分:1)
很遗憾,目前无法读取CSV
并指定仅用于模式的类型。您可以使用POJO
创建private int budget;
,转换将自动完成。对于其他解决方案,请查看以下问题:jackson-dataformat-csv: Mapping number value without POJO,在这里您可以看到:
Map
实现的技巧。