首页 > 解决方案 > 使用双引号键/值将 csv 字符串转换为 Map

问题描述

我正在将CSV字符串转换为Map. 我可以转换它,但问题是我需要用双引号获取 Map 中的键和值""

输入字符串:"fname", "lname", ...... \n "ramprakash","seepana",...

获取数据 [fname=ramprakash, lname=seepana, ...]

预期数据为:["fname"="ramprakash", "lname"="seepana", ...]

如何做到这一点?

标签: javacsvcollectionsjackson

解决方案


假设您的CSV外观如下所示:

"fname", "lname"
"ramprakash","seepana"
"ramprakash1","seepana1"

要让"您需要在CsvSchema引号字符中禁用。例子:

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

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

public class JsonApp {

    public static void main(String[] args) throws Exception {
        File csv = new File("./resource/test.csv").getAbsoluteFile();

        CsvMapper mapper = new CsvMapper();

        CsvSchema schema = CsvSchema
                .emptySchema()
                .withHeader()
                .withColumnSeparator(',')
                .withoutQuoteChar();

        MappingIterator<Map<String, String>> it = mapper
                .readerFor(Map.class)
                .with(schema)
                .readValues(csv);


        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

上面的代码打印:

{"fname"="ramprakash", "lname"="seepana"}
{"fname"="ramprakash1", "lname"="seepana1"}

推荐阅读