当前位置: 首页 > 知识库问答 >
问题:

Univocity-将单行解析为多个bean

商皓
2023-03-14

是否可以根据索引范围将一行解析为多个bean

例:

行:“字段1”、“字段2”、“字段3”。。。。,“字段9”

class ColumnsOneAndTwo {
   protected String field1;
   protected String field2;
}

class ColumnThreeAndNine {
   protected String field3;
   protected String field9;
}

class Row {

  @Parsed(indexes = 0, 1)
  protected ColumnOneAndTwo fields;

  @Parsed(indexes = 2, 8)
  protected ColumnThreeAndNine moreFields;

} 

BeanListProcessor<Row> rowProcessor = new BeanListProcessor<Row>(Row.class);

CsvRoutines routines = new CsvRoutines(parserSettings);

for (Row data : routines.iterate(Row.class, <file>, "UTF-8")) {  

}

共有1个答案

李兴为
2023-03-14

您正在寻找@嵌套注释。只需使用:

class ColumnsOneAndTwo {
    @Parsed(index=1)
    protected String field1;

    @Parsed(index=2)
    protected String field2;
}

class ColumnThreeAndNine {
    @Parsed(index=3)
    protected String field3;

    @Parsed(index=9)
    protected String field9;
}

class Row {

   @Nested
   protected ColumnOneAndTwo fields;

   @Nested
   protected ColumnThreeAndNine moreFields;

} 

希望有帮助。

免责声明:我是这个图书馆的作者。它是开源和免费的(Apache 2.0许可证)

 类似资料:
  • 我正在为我的一个项目评估Univocity解析器,固定宽度平面文件格式从三个细节记录(例如,以AA、BB、CC开头)生成一个记录(Bean)——这个文件可以使用Univocity解析吗 我可以使用继续阅读并添加一些自定义转换,但是是否有现成的? 更新: 可以使用:?

  • 我试图使用univocity解析器将csv文件解析为bean的新实例和现有实例。csv是通过使用univocity BeanWriterProcessor生成的,对于我将称为set a的一组bean。 现在我想读回csv,执行以下操作: 案例1:如果行对应于最初出现在集合a中的一个bean,我不想创建一个新的bean实例,而是将csv读入“现有”实例。(即,“更新”实例)。我通过使用bean的UU

  • 我正在尝试从GTFS读取CSV文件。在uniVocity解析器的帮助下压缩,遇到了一个我无法解决的问题。出于某种原因,某些CSV文件的第一列似乎无法正确解析。例如,在“stops.txt”文件中,如下所示: 无法正确解析“stop_id”字段,该字段的值为“null” 这是我用来读取文件的方法: 这就是我的Stop课程的样子: 如果我调用的方法,我得到这个输出是不正确的: 输出: 有人知道为什么会

  • 我有一个文件,它有固定的行,但每一行都映射到不同的Java类。 例如 对于第一排,我有后续类: 第二排我有: 我想将TSV文件直接解析到相应的对象,但我没有什么想法。

  • 我试图使用统一解析器来解析一个固定宽度格式的文件,该文件每行包含可变数量的固定宽度记录。 格式为记录id[6],子记录[3]的#,子记录[6] 期望的结果是有一个子记录数组。@链接注释似乎适用,但留档声明这仅适用于超文本标记语言解析器。 我目前的解决方案是将子记录解析为字符串,然后循环遍历每个记录,并在子记录字符串中插入换行符,然后重新解析。有没有一种方法可以使用univocity解析器来实现这一

  • 我如何在ItemReader中使用Univocity一次读取一行,仍然使用BeanProcessor将我的行自动解析为Java对象?