【问题标题】:BeanIO : Multiple records in single row of fileBeanIO:单行文件中的多条记录
【发布时间】:2019-05-13 22:50:37
【问题描述】:

我有一个包含多行(行)的文本文件,我正在尝试使用 BeanIO 读取它。该文件如下所示:

阿黛尔|莱昂内尔·里奇|你好|22865

艾德希兰|简单计划|One|11230

在这里,线条代表拥有同名歌曲的多位艺术家。 Adele 和 Lionel Richie 有一首歌叫《Hello》,歌曲 id 是 22865。每行的列数总是 4

我需要解析这一行来创建 2 个 Song 对象

Class Song{
 String artistName;
 String songName;
 int songId;
}

上面的第一行必须给出 2 个 Song 对象:

阿黛尔,你好,22865

莱昂内尔·里奇,你好,22865

这可以使用 BeanIO 实现吗?我已经使用了 BeanIO 的分隔符解析能力来解析但不知道如何获取单行的多条记录

【问题讨论】:

  • 由于您的记录没有固定的格式,即固定的列数,您不能使用自动对象映射库。您需要自己解析这些行,使用BufferedReadersplit() 应该很容易,假设没有值可以包含| 字符。
  • 我进一步查看了数据,看起来所有行都有固定的 4 列。我已经编辑了问题以提及这一点

标签: java fileparsing bean-io


【解决方案1】:

遵循文档中的指南:

http://beanio.org/2.0/docs/reference/index.html#RecordGroups

Class Song{
 List<String> artistName;
 String songName;
 int songId;
}

这样你就可以拥有尽可能多的艺术家

<record name="artistName" collection="list" >
...
</record>

【讨论】:

  • 感谢您的回答和链接!我需要文件中每一行的两个不同的 Song 对象。因为最终它们将转换为数据库表中的两行。
猜你喜欢
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
相关资源
最近更新 更多