java - jackson CSV allowComments 仅适用于多行消息?
问题描述
示例 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
允许您检查下一个元素。因此,很明显,如果没有元素,我们可以停止迭代。
所以,在我看来,这不是一个错误。
推荐阅读
- flutter - 如何在 Flutter 上添加 A Share 按钮?
- reactjs - useEffect Hook 中的值不变
- python - 如何使用 Superset 修复 Druid 连接错误?
- mysql - 如何创建具有两个父 ID 的 MySQL 分层递归查询?
- python - 将 AutoName 和多个值与 Python 3.9 枚举相结合
- html - 谷歌日历嵌入问题:移动
- jmeter - 使用整个 Json 对象作为字符串变量
- flutter - 尝试将 DateTime 更改为在 dart 中具有时区格式的字符串时出错
- javascript - 当您在另一个元素上滚动时阻止 Windows 滚动
- fpml - 发布 FPML 示例