问题标签 [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.
jackson - 忽略使用 Jackson CSV 解析 CSV 文件的特定列
我的问题是我需要将具有任意列/顺序的 CSV 文件解析为已知域 POJO(比如 Person)。我可以确定我需要处理哪些列,而忽略其余列。
选项 CsvParser.Feature.IGNORE_TRAILING_UNMAPPABLE" 似乎正是我需要的,但我需要处理的列不必在 CSV 文件的开头进行分组,我不能强制用户“重新排序”列他们上传的 CSV 文件。此外,有时我没有得到标题行,但 UI 会强制用户识别列并传递此信息。
例如,我有以下 CSV 文件:
我只需要 6 列中的 4 列(名字、姓氏、出生日期、邮政编码),因为我的 Person POJO 仅包含这些字段:
我已经为 Person 定义了一个 CsvSchema,并指定了我感兴趣的列(名字、姓氏、IGNORE、DOB、IGNORE2、邮政编码),因为我想跳过列(昵称、职业)。然而,“IGNORE”列在反序列化器中的映射过程中被忽略,我最终得到“DOB”的“昵称”值,导致 DOB 字段的值无效。
java - 使用带有 jackson-dataformat-csv 的日期字段时出现 InvalidFormatException 失败
我正在尝试使用 jackson-dataformat-csv 中的 CSVMapper 实用程序来解析 CSV 文件并创建 POJO 记录以插入 mysql 数据库。
这样做时,如果日期信息作为 CSV 中的列之一存在以映射到 POJO 中的日期字段,我将面临问题。
通过读取 CSV 文件并将其转换为 POJO,我有以下代码。
错误.java
控制器代码
这确实工作了很长一段时间,我能够在 while 循环中打印记录,然后将记录插入到 mysql 表中。
不知道代码发生了什么变化,现在我遇到了以下问题
java - Hashmap 无法被 CsvMapper 识别
我正在尝试序列化包含 HashMap 的对象,但出现以下异常。
另外,我不明白为什么在序列化方面需要有一个模式。在我看来,没有办法拥有一个无法识别的字段,因为它都是在类中指定的。
因为我不太了解杰克逊,所以我搜索并尝试了这两个注释的各种组合。@JsonUnwrapped
@JsonAnyGetter
用于序列化的代码
尝试 NR 2
}
新错误
jackson - 从csv读取字符串作为级别
我有一个如下所示的 csv:
我想将第二个(级别)值读取为 org.slf4j.event.Level 。我正在使用 jackson-dataformat-csv 库,但找不到将字符串 ERROR、WARN 等反序列化为级别枚举的示例。这是我尝试过的:
我的错误 POJO 如下:
但我收到以下 JsonMappingException
jackson - Jackson CsvMapper 只读取第一行
我想将 csv 文件读入字符串列表。我还希望它修剪空格并允许尾随逗号。我的 csv 文件如下所示:
当我尝试使用我的方法解析它时:
我得到:
如何解决?
java - 写入 CsvMapper 并随后收集全部内容
最近一直在尝试使用JsonGenerator
. 即使您没有将 链接OutputStream
到直接输出以阅读内容,如果您愿意,您也可以在最后阅读整个内容。
我试图用杰克逊复制完全相同的东西,它是 CSV 库。
所以基本上我想知道的是,有没有办法收集整个内容CsvMapper
?一直潜伏在 API 中,找不到任何方法来访问任何流或其他任何东西。
java - 有没有办法使用 Jackson 和/或其相关库之一(csv、json 等)将字符串转换为 Java 类型?
是否有一种机制可以应用一组标准检查来检测字符串,然后将其转换为检测到的类型,使用 Jackson 的标准文本相关库(csv、json 甚至 jackson-core)之一?我可以想象将它与与该值关联的标签(例如 CSV 标头)一起使用来执行类似以下的操作:
需要一组“提取器”来应用转换,并且类的消费者必须意识到“对象”返回类型的“歧义”,但仍然能够消费和使用信息,因为它目的。
我目前正在考虑的示例涉及构建 SQL DDL 或 DML,例如使用从评估 csv 文件中的行派生的 List 中的信息的 CREATE Table 语句。
经过更多的挖掘,希望在那里找到一些东西,我写下了我的想法的开始。
请记住,我在这里的意图不是要呈现“完整”的东西,因为我确信这里缺少一些东西,没有解决边缘情况等。
例如,这pasrse(List<Map<String, String>> rows, List<String> headers
源于这样的想法,即这可能是从杰克逊读取的 CSV 文件中的行样本。
同样,这并不完整,所以我不想挑出以下所有问题。问题不是“我们将如何写这个?”,而是“有没有人熟悉存在的类似以下内容的东西?”。
一个简单的解析器,它parse
来自我List<Map<String,String>>
从 CSVReader 获得的上下文。
提取器。只是一个示例,说明如何在某处注册值的“提取器”(包含在字符串中)以进行查找。它们也可以通过任何其他方式引用。
我从 JavaTypeParser 类中运行它,以供参考。
java - 杰克逊 CSV。标题中的引号转义
我有一个 CSV 文件,其中一个标题看起来像 Name;Lastname;"Some info\n more info"
我的解析器:
但是解析后,我丢失了标题中的引号并得到了Name;Lastname;Some info\n more info
. 如何保存报价?
java - Jackson 如何将一个 Pojo 字段映射到 2 个(json)字段(相同的内容,不同的名称)
我用来Jackson
将 s 序列POJO
化为CSV
. 现在我们需要将某些字段的命名更改为snake_case。这很容易做到@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
。
出于兼容性原因,我们需要一些重命名的字段也使用它们的旧名称。
例如:
默认将序列化为“someField”,SnakeCaseStrategy
将序列化为“some_field”。
如何获得两者的序列化?:
我的第一次尝试是混合:
但这实际上只会撤消命名策略的更改。那么如何在序列化中复制一个字段 - 最好不要通过更改 Pojo(当所有客户端都可以处理时,应该删除这个复制的字段)。
小更新:
在我的真实课堂中,有一些使用JsonUnwrapped的嵌套类,并且文档指出这不适用于自定义序列化程序(不知道这在这里会有所不同)。
spring - Jackson ObjectWriter 仅从流中写入第一个条目
我想创建一个 Spring Boot 控制器,它使用流中的数据创建一个 CSV 文件。我使用 Jackson CSV (jackson-dataformat-csv 2.12.1) 将数据流从 DB 写入 StreamingResponseBody。
为了简单起见,我将数据库中的实际数据替换为包含1, 2, 3
. 我想要一个如下所示的 CSV 文件:
但它只包含第一个条目 ( 1
)。有人可以帮我找出问题吗?
请不要说我不想在服务器上的某处创建文件,我想将内容直接流式传输给用户。
我的代码如下所示: