简体   繁体   English

Jackson CsvMapper 只读取第一行

[英]Jackson CsvMapper reads only the first line

I want to read csv file to List of strings.我想将 csv 文件读取到字符串列表。 I also want it to trim whitespaces and allow trailing comma.我还希望它修剪空格并允许尾随逗号。 My csv file looks like this:我的 csv 文件如下所示:

abcdefghijklmno ,
pqrstuwzabcdefh,
ijklmnopqrstuwyz,
zabcdefghijklmopqr,

And when I try to parse it using my method:当我尝试使用我的方法解析它时:

fun parseCsv(inputStream: InputStream): List<String> {
        val mapper = CsvMapper().enable(CsvParser.Feature.TRIM_SPACES).enable(CsvParser.Feature.ALLOW_TRAILING_COMMA)
        val schema = CsvSchema
            .emptySchema()
            .withLineSeparator("\n")
            .withColumnSeparator(',')
            .withQuoteChar('"')
        return try {
            mapper
                .readerFor(String::class.java)
                .with(schema)
                .readValues<String>(inputStream)
                .readAll()
        } catch (e: IOException ) {
            logger.error("Error parsing file", e)
            emptyList()
        } catch (e: NoSuchElementException) {
            throw FileParsingError(e)
        }
    }

I get:我得到:

expected == actual
|        |  |
|        |  [abcdefghijklmno, ]
|        false
[abcdefghijklmno, pqrstuwzabcdefh, ijklmnopqrstuwyz, zabcdefghijklmopqr]

How to fix it ?如何解决?

This worked for me:这对我有用:

return mapper.readerForListOf(Map.class)
    .with(schema)
    .with(CsvParser.Feature.WRAP_AS_ARRAY) // <-- This.
    .readTree(content);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 Jackson CSVMapper 中仅将标题打印为字符串 - How to print only the header into a string in Jackson CSVMapper 在 Jackson CsvMapper 中使用自定义字符集 - Use custom charset in Jackson CsvMapper Jackson CsvMapper 到 map object 和 map 的映射到 csv - Jackson CsvMapper to map object with a map of maps to csv 使用 Jackson CsvMapper 序列化 POJO 时省略字段 - Omitting fields when using Jackson CsvMapper to serialize POJOs How to convert CSV to JSON with value in double quotes using com.fasterxml.jackson.dataformat.csv.CsvMapper in Java? - How to convert CSV to JSON with value in double quotes using com.fasterxml.jackson.dataformat.csv.CsvMapper in Java? 如何使用jackson CsvMapper或其他csv解析器从CSV字符串解析列? - How do I parse a column from a CSV string using jackson CsvMapper or another csv parser? 使用Jackson ObjectMapper仅转换第一级对象树 - Converting only the first level of object tree using Jackson ObjectMapper Jackson ObjectWriter 仅写入 stream 中的第一个条目 - Jackson ObjectWriter only writes first entry from stream Spring Jackson反序列化仅选择数组的第一项 - Spring Jackson deserialization only picks the first item of an array Java / Hibernate Jackson仅对第一个对象进行关系序列化 - Java/Hibernate Jackson does relationship serialisation only for first object
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM