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;
            }
        };
    }
}