示例 1(失败):
final String line = "# 134";
CsvMapper mapper = mapperForCsv();
String[] it = mapper.readerFor(String[].class)
.with(mapper.schema().withComments()).readValue(line);
示例 2(成功):
final String line = "# 134";
CsvMapper mapper = mapperForCsv();
MappingIterator<String[]> its = mapper.readerFor(String[].class)
.with(mapper.schema().withComments()).readValues(line);
检查代码后,我发现 withComments 仅适用于多行消息。这是一个错误还是预期的?
最佳答案
当您创建 MappingIterator
对象时,您实际上还没有反序列化任何内容。您需要迭代所有行或使用 its.readAll()
方法来启动反序列化过程。
当您使用readValue
方法时,您期望只有一个对象。如果不可用,则会抛出异常以通知您这是不可能的。它不能只是返回 null
,因为这将是无提示故障,并且可能会在稍后导致 NPE
。
使用 MappingIterator
是一个不同的场景,因为您需要迭代它,并且 API
允许您检查下一个元素。因此,很明显,如果没有元素,我们就可以停止迭代。
所以,在我看来这不是一个错误。
关于java - Jackson CSVallowComments仅适用于多行消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425365/