CSVReader 将 null 视为字符串 "null"
CSVReader treart null as string "null"
我有一个如下所示的输入 csv
firstName,lastName
abdu,null
shah,kha
我正在使用 opencsv,我的代码是这样的
File inputFile = new File("input.csv");
CsvSchema schema = CsvSchema.emptySchema().withHeader();
MappingIterator<Map<String, String>> mappingIterator =
new CsvMapper().readerFor(Map.class).with(schema).readValues(inputFile);
第一个映射迭代器生成以 firstName 和 lastName 作为键的映射。
lastName 的值为 "null"
(带引号的字符串)。
有什么方法可以让我把它读成 null
(不带引号)??
在 OpenCSV 中,您可以像这样实现自己的 CSVParser:
public static void main(String[] args) throws Exception {
String csv = "firstName,lastName\n" +
"abdu,null\n" +
"shah,kha";
CSVReader reader = new MyCSVReader(csv);
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (String s : nextLine) {
System.out.print(s == null ? "NULL" : s);
}
System.out.println();
}
}
private static class MyCSVReader extends CSVReader {
public MyCSVReader(String csv) {
super(new StringReader(csv));
parser = new CSVParser() {
@Override
protected String[] parseLine(String nextLine, boolean multi) throws IOException {
String[] result = super.parseLine(nextLine, multi);
for (int i = 0; i < result.length; ++i) {
if ("null".equals(result[i])) result[i] = null;
}
return result;
}
};
}
}
我有一个如下所示的输入 csv
firstName,lastName
abdu,null
shah,kha
我正在使用 opencsv,我的代码是这样的
File inputFile = new File("input.csv");
CsvSchema schema = CsvSchema.emptySchema().withHeader();
MappingIterator<Map<String, String>> mappingIterator =
new CsvMapper().readerFor(Map.class).with(schema).readValues(inputFile);
第一个映射迭代器生成以 firstName 和 lastName 作为键的映射。
lastName 的值为 "null"
(带引号的字符串)。
有什么方法可以让我把它读成 null
(不带引号)??
在 OpenCSV 中,您可以像这样实现自己的 CSVParser:
public static void main(String[] args) throws Exception {
String csv = "firstName,lastName\n" +
"abdu,null\n" +
"shah,kha";
CSVReader reader = new MyCSVReader(csv);
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (String s : nextLine) {
System.out.print(s == null ? "NULL" : s);
}
System.out.println();
}
}
private static class MyCSVReader extends CSVReader {
public MyCSVReader(String csv) {
super(new StringReader(csv));
parser = new CSVParser() {
@Override
protected String[] parseLine(String nextLine, boolean multi) throws IOException {
String[] result = super.parseLine(nextLine, multi);
for (int i = 0; i < result.length; ++i) {
if ("null".equals(result[i])) result[i] = null;
}
return result;
}
};
}
}