【问题标题】:Java - How to deserialize a CSV file to JavaBeansJava - 如何将 CSV 文件反序列化为 JavaBeans
【发布时间】:2019-12-04 04:58:59
【问题描述】:

我想将一个 java 对象解析为 XML 字符串形式的 CSV 文件。

例如,我得到了这样的 csv,所有列都是可选的:

name,age,class,level
jon,12,archer,12

然后我想将其解析为 XML,输出如下(例如,我不需要 level 列):

<char>
     <name>jon</name>
     <age>12</name>
     <class>archer</class>
</char>

对于 XML 的对象,这很容易,因为我只需要使用 @XmlElement 来解析。 但是我将 CSV 解析为 Object 来做剩下的事情让我很困惑。 我试过使用 Jsefa 但它只能返回一个 Object 而不是 bean 让我添加注释

【问题讨论】:

  • xml 或 csv 是硬性要求吗?像 Protobuf 这样的二进制格式会更有效并保留类型信息
  • 那么为什么不读取 csv 并将其转换为 java 对象...然后执行您对 java 对象所做的操作...如果您愿意,可以使用 jackson。或者您可以采用其他方式...第一次尝试将 csv 转换为 json,然后将 json 转换为 xml。试试这个链接:atozjavatutorials.blogspot.com/2015/06/…
  • 是的,因为 CSV 和 XML 都是硬性要求。如果我将 CSV 转换为 JSON,然后将 JSON 转换为 XML,那么这有点耗时,因为我可以解析 CSV 以映射并将其解析为 bean 并在该对象上生成 XML

标签: java


【解决方案1】:

您可以使用 OpenCSV 读取 CSV 并转换为 Java 对象。你可以参考它的文档和例子OpenCSV Reading into beans

有关如何将 OpenCSV 添加到您的项目的信息,请访问 Addng OpenCSV to your project

【讨论】:

  • 所以这可以使 CSV 中的列成为可选的,因为有时我不需要所有 CSV 列值都出现在我的 XML 中
  • 我认为即使是可选列也应该可以。您可以快速尝试一下。我已经更新了答案,其中包含如何将 OpenCSV 添加到您的项目的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多