gpt4 book ai didi

java - Univocity 解析器 - 迭代器方式生成 scala 案例类

转载 作者:行者123 更新时间:2023-11-30 07:09:33 24 4
gpt4 key购买 nike

使用Univocity框架来做自定义解析需求。我们有一个迭代器,通过调用 parseNext() 将每一行输出为一个事件,我们不想使用“parse(File file)”。

我们将此 Scala 案例类作为最终输出,但目前我们正在处理解析器的输出并使用工厂类来创建 Scala 案例类。

是否有迭代器方式从 univocity 生成案例类对象(我确实找到了 BeanListProcessor 但它不适用于迭代器方式)?

答案可以是 Java 或 Scala。

谢谢,

  def parseRecord(field: Array[String], univocityContext: Option[ParsingContext]): Option[lineEvent] = {

val parsingContext = univocityContext.get
val parsedEvent = new ParsedEventConstructor()

for ((index, counter) <- parsingContext.extractedFieldIndexes().zipWithIndex){

val columnHeader = parsingContext.headers()(index)

columnHeader match {

case "header1" => {
parsedEvent.parsedheader1 += field(counter)
}
case "header2" => {
parsedEvent.parsedheader2 += field(counter)
}
case _ => parsedEvent.parsedOtherValues += field(counter)
}
}

Some(parsedEvent.getParsedEvent())
}

最佳答案

uniVocity-parsers有一个 BeanProcessor(名称中不带“List”),它将把每个已解析的 bean 提交给您需要实现的“beanProcessed”回调方法。 BeanListProcessor 只是一个方便的类,它扩展了 BeanProcessor 以将每个对象添加到列表中,它不是获取对象的唯一方法。

您还可以使用 CsvRoutines 对象及其 iterate 方法来迭代 Bean,而不使用上述回调。检查this example .

关于java - Univocity 解析器 - 迭代器方式生成 scala 案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com