java - 使用双引号键/值将 csv 字符串转换为 Map
问题描述
我正在将CSV
字符串转换为Map
. 我可以转换它,但问题是我需要用双引号获取 Map 中的键和值""
输入字符串:"fname", "lname", ...... \n "ramprakash","seepana",...
获取数据 [fname=ramprakash, lname=seepana, ...]
预期数据为:["fname"="ramprakash", "lname"="seepana", ...]
如何做到这一点?
解决方案
假设您的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"}