【问题标题】:How can I tell SuperCSV NOT to map empty string to null我如何告诉 SuperCSV 不要将空字符串映射到 null
【发布时间】:2014-03-02 18:15:03
【问题描述】:

我正在使用ICsvListReader和ICsvListWriter读写csv文件。
我发现csv文件中的空字符串被转换为null然后输出。
我怎样才能避免这种情况发生。我已经尝试创建一个新的 CellProcessor:

private CellProcessor[] getProcessors(int columnNumber){

        CellProcessor[] processors = new CellProcessor[columnNumber];
        for (int i=0; i< columnNumber; i++){
            processors[i] = new ConvertNullTo("");
        }
        return processors;
    }

但它仍然无法正常工作。

有没有办法改变这个设置?

【问题讨论】:

    标签: java csv supercsv


    【解决方案1】:

    空列不需要在 CSV 中转义(因此默认情况下 Super CSV 不会在空字符串周围应用引号),但如果您希望始终应用引号,那么您可以在 Super CSV 中更改 QuoteMode

    这是 SO 上的 recent example 演示了这一点。

    更新:如果你只想引用空字符串,那么确保你写的值是空字符串(即你可能需要使用ConvertNullTo("")),然后使用下面的引用模式:

    public class QuoteEmptyString implements QuoteMode {
    
        /**
         * {@inheritDoc}
         */
        @Override
        public boolean quotesRequired(String csvColumn, CsvContext context, 
            CsvPreference preference) {
            return "".equals(csvColumn);
        }
    
    }
    

    【讨论】:

    • 您好,感谢您的回复,但我不希望总是在空字符串上应用引号,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多