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

我使用以下代码:

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> data = readObjectsFromCsv(input); writeAsJson(data, output); } public static List> readObjectsFromCsv(File file) throws IOException { CsvSchema bootstrap = CsvSchema.emptySchema().withHeader(); CsvMapper csvMapper = new CsvMapper(); MappingIterator> mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file); return mappingIterator.readAll(); } public static void writeAsJson(List> data, File file) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.writeValue(file, data); } } 

有关更多信息和示例,请参阅此页面: jackson-dataformat-csv 。