java - 使用 Jackson 库直接将 CSV 文件转换为 JSON 文件

标签 java json csv jackson

我正在使用以下代码:

CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
ObjectMapper mapper = new CsvMapper();
File csvFile = new File("input.csv"); // or from String, URL etc
Object user = mapper.reader(?).withSchema(bootstrap).readValue(new File("data.csv"));
mapper.writeValue(new File("data.json"), user);

它在我的 IDE 中抛出一个错误,提示 cannot find symbol method withSchema(CsvSchema) 但为什么呢?我使用了一些示例中的代码。

我不知道要在 mapper.reader() 中写入什么,因为我想转换任何 CSV 文件。
如何将任何 CSV 文件转换为 JSON 并将其保存到磁盘?

接下来要做什么?实例

最佳答案

我认为,您应该使用MappingIterator 来解决您的问题。请参见以下示例:

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;

public class JacksonProgram {

    public static void main(String[] args) throws Exception {
        File input = new File("/x/data.csv");
        File output = new File("/x/data.json");

        List<Map<?, ?>> data = readObjectsFromCsv(input);
        writeAsJson(data, output);
    }

    public static List<Map<?, ?>> readObjectsFromCsv(File file) throws IOException {
        CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
        CsvMapper csvMapper = new CsvMapper();
        try (MappingIterator<Map<?, ?>> mappingIterator = csvMapper.readerFor(Map.class).with(bootstrap).readValues(file)) {
            return mappingIterator.readAll();
        }
    }

    public static void writeAsJson(List<Map<?, ?>> data, File file) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(file, data);
    }
}

查看此页面:jackson-dataformat-csv获取更多信息和示例。

关于java - 使用 Jackson 库直接将 CSV 文件转换为 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766266/

相关文章:

java - 当尝试读取 XML 时,Bundle 对不同的 Bundle 产生了无法解释的要求

c# 如何在我的类中添加属性而不必更改原始类

javascript - 如何在 JavaScript 中使用从 csv 文件加载的数据?

c# - 如何统一使用 JsonUtility 获取子数组

javascript - JSON.parse Reviver 函数中出现意外行为,删除对象而不是关键属性

mysql - 使用绝对 URL 加载 MySQL 文件中的数据

csv - 带有自定义 sObject 的 Test.loadData 引发异常

java - 使用信号量管理连接池 (Java)

java - 将后端服务的一行数据放入ListView中

java - 简单的约束规划求解器