小编Ric*_*ard的帖子

使用 schema 和 json 类型将 csv 直接转换为 json

问题:您可以使用 CsvMapper/CsvSchema 将 csv 转换为map<string, object>对象不是字符串的对象,例如布尔值或整数吗?

详细信息:我有一些 csv 文件,我想将它们直接转换为 json。我无权访问 POJO。但我确实有一个 xml 架构文件,其中包含 csv 数据中列的类型信息。

经过一些搜索后,我决定使用 Jackson 的 CsvMapper/CsvSchema 将 csv 文件转换为 json。我创建了一个包含列类型信息的 CsvSchema,然后将 csv 文件转换为 Map<> 文件,然后将映射文件转换为 json。除了一件事之外,一切都运行良好。所有 json 属性都是字符串,甚至 CsvSchema 定义为布尔和数字类型的属性也是如此。下面是一个小片段,显示了我正在做的事情。

String csvEmployeeData="\"Bob\",25,true\n" +
                       "\"Joe\",35,false\n" +
                       "\"Tom\",45,false\n";

CsvSchema schema = CsvSchema.builder().addColumn("name", ColumnType.String)
                                      .addColumn("age", ColumnType.NUMBER)
                                      .addColumn("isManager", ColumnType.BOOLEAN)
                                      .build();

CsvMapper csvMapper = new CsvMapper();
MappingIterator<Map<String, ? extends Object>> it = csvMapper.readerFor(Map.class)
                                                      .with(schema)                                                        
                                                      .readValues(csvEmployeeData);
List<Map<String, ? extends Object>> objectList=it.readAll();
Map<String, ? extends Object> employeeObj=objectList.get(0);

assertEquals("java.lang.Integer", employeeObj.get("age").getClass().getTypeName());
// …
Run Code Online (Sandbox Code Playgroud)

java csv json jackson fasterxml

6
推荐指数
0
解决办法
1573
查看次数

标签 统计

csv ×1

fasterxml ×1

jackson ×1

java ×1

json ×1