首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java、Csv到json、jackson-dataformat-csv

Java、Csv到json、jackson-dataformat-csv
EN

Stack Overflow用户
提问于 2017-04-26 20:01:22
回答 2查看 4K关注 0票数 0

我是一个新手,我想把csv文件转换成json。

我正在使用下面的代码示例将csv文件转换为json文件,问题是,我在“withSchema(bootstrap)”上得到了一个错误,它说:“带有(CsvSchema)的方法未为类型ObjectReader定义”,我不知道如何修复它,我已经将maven依赖项更改为版本2.9.0,尝试使用with type (Bootstrap) withCsvSchema(bootstap),但仍然不起作用。

谢谢

代码如下:

代码语言:javascript
复制
package CsvData;

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 csvjson {

    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();
        MappingIterator<Map<?, ?>> mappingIterator = csvMapper.reader(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);
    }
}
EN

回答 2

Stack Overflow用户

发布于 2018-12-28 17:58:19

我尝试了2.2.1版本,它对我来说工作得很好。

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
<version>2.2.1</version>

下面是Java方法

代码语言:javascript
复制
public static List<Map<?, ?>> readObjectsFromCsv(File file) throws IOException {
    CsvSchema bootstrap = CsvSchema.emptySchema().withHeader();
    CsvMapper csvMapper = new CsvMapper();
    MappingIterator<Map<?, ?>> mappingIterator = csvMapper.reader(Map.class).with(bootstrap).readValues(file);

    return  mappingIterator.readAll();
}

甚至文档说它从2.2开始工作,但不知道为什么它不能在2.9.0中工作。

票数 1
EN

Stack Overflow用户

发布于 2017-04-26 20:25:03

正确的方法名称是withSchema

代码语言:javascript
复制
csvMapper.reader(Map.class).withSchema(bootstrap).readValues(file);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43633627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档