问题标签 [jackson-dataformat-csv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 尽管架构配置,Jackson CsvMapper 无法正确反序列化为 POJO
出于某种原因,尽管配置了 FasterXML Jackson CSV 映射器来创建基于 POJO 的模式,但它坚持认为没有提供合适的配置。我得到以下异常:
我的 POJO 很简单
我的解析代码是
我以这种方式处理 MultipartFile 而不是直接读取流的原因是消除了文件和映射器之间不匹配行分隔符的问题(我在 Windows 上工作 [不要对我投反对票 :(],而映射器的默认行分隔符仅\n
.
数据文件是这个
名字,姓氏,年龄
"保罗","史密斯","22"
《简》、《粗鲁》、《98》
我尝试添加和删除引号(默认字符串分隔符)。我尝试不使用年龄数字引号,然后出于绝望添加了它们。没有欢乐!
我查看了其他 SO 问题以及博客文章的文档。没运气。
java - 使用 jackson-dataformat-csv 从 csv 解析双引号
我有一个包含以下内容的 csv
现在我正在尝试使用以下代码将此 csv 中的每一行作为对象读取
但它失败了,因为"B"
csv 中存在。我收到以下错误:
引起:com.fasterxml.jackson.core.JsonParseException:意外字符('W'(代码 87)):预期的分隔符('"'(代码 34))或 [来源:(com.fasterxml .jackson.dataformat.csv.impl.UTF8Reader);行:2,列:43]
如何正确解析 csv 中的双引号?我试着玩弄,schema.withEscapeChar()
schema.withQuoteChar()
但我无法让它工作。
java - 如何仅为字段而不是类本身添加序列化程序
我有一个AbstractEntity
用属性调用的基本 JPA 实体code
,我还有大量其他 JPA 实体(ProductEntity
、CategoryEntity
、UserEntity
等),每个实体都从AbstractEntity
.
现在一些实体有对其他实体的引用,例如CategoryEntity
有一个名为的属性parentCategory
或ProductEntity
有一个类别的集合 ( categories
)。
现在我想用 jackson 序列化 a ProductEntity
,但是每当一个属性是类型时,AbstractEntity
我希望它只打印 the而不打印code
其他任何东西。
我的解决Serializer
方案是为. 相反,我想要的是:AbstractEntity
ProductEntity
AbstractEntity
objectMapper.writeValueAsString(product)
code
有没有办法告诉杰克逊仅将我的自定义序列化程序用于字段而不是对象本身?顺便说一句,我不能真正使用注释,因为我无权访问代码,就像我说的类真的很多。
java - 使用 Jackson CSV 将 CSV 解析为 POJO 列表
我有一个字符串,其中包含 CSV 数据,并希望将其解析为 POJO 列表。
我怎样才能用杰克逊 CSV 做到这一点?
奖励:我怎样才能使它使用 CSV 标头?
我的两次不成功的尝试:
第一次尝试以随机顺序填充属性,这不是 CSV 列的顺序,也不是 POJO 的属性顺序。
第二次尝试出现以下错误:
java - 是否可以将 CSV 行解析为具有正确值类型的 JsonNodes
很容易将 csv 解析为https://github.com/FasterXML/jackson-dataformats-text/tree/master/csv#with-column-names-from-first-rowList<Map<String,String>>
中所述
但是,类型推断必须手动完成。例如,像我在下面尝试做的事情?使用Boolean.parseBoolean
etc 对我来说感觉很臃肿,因为杰克逊把所有这些东西都做得很好......
是否可以将 CSV 行解析为具有正确值类型的 JsonNodes 而无需依赖 POJO 来提供它们?
java - 配置 CsvMapper 以检查每个写入的值
我正在使用jackson-dataformat-csv
将 POJO 集合导出到 CSV,如下所示:
我想在将每个字段值写入 CSV 之前对其进行检查,并可选择修改该值以防止 Excel、Sheets 等可能执行的公式或其他内容。例如,如果一个值以@
or开头,=
那么我可能会将'
字符添加到该值以防止执行。
如何配置CsvMapper
以便为写入 CSV 的每个值获取回调?
java - jackson-dataformat-csv:没有 POJO 的映射数字值
我正在尝试使用解析 CSV 文件,jackson-dataformat-csv
并且我想将数字列映射到 Number java 类型。
我期待entryMap.get("age")
应该是一个Number
,但我得到String
了。
我的 CSV 文件:
我知道这CsvSchema
适用于 POJO,但我需要处理任意 CSV 模式,所以我不能为每种情况创建一个新的 java 类。
有什么方法可以将 CSV 解析为类型Map
或Array
?
java - 如何防止 CsvMapper 在输出 CSV 中包含无法识别的字段?
使用CsvMapper
with 时@JsonPropertyOrder
,所有未明确命名的字段都放在 CSV 记录的末尾。这意味着拼写错误会导致不同的 CSV 排序。
例子:
结果:test,2,true
. 由于status
没有明确命名,@JsonPropertyOrder
因此将其放在记录的末尾。CsvMapper
如果抛出异常或者根本没有序列化,我更愿意。
另一个例子是,如果我将@JsonPropertyOrder
上面更改为@JsonPropertyOrder({"name", "stats", "code"})
. 注意 中的错字stats
。这将产生与上述相同的 CSV。
如何配置CsvMapper
为在无法识别的属性上失败或不序列化未命名的属性@JsonPropertyOrder
?
java - 如何在 Jackson CSVMapper 中仅将标题打印到字符串中
我正在使用 Jackson CSVMapper 将制表符分隔的文本文件读入 Java 对象列表,然后将其写回另一个制表符分隔的文本文件。我的课看起来像这样:
解析器代码:
编写器代码:
无论数据如何,我都只想提取标题。所以,
应该返回
我该怎么做?
谢谢!