【发布时间】:2016-09-11 22:12:05
【问题描述】:
使用 Univocity 框架进行自定义解析需求。我们有一个迭代器通过调用 parseNext() 将每一行作为事件输出,我们不想使用“parse(File file)”。
我们将这个 Scala 案例类作为最终输出,但目前我们正在处理解析器的输出并使用工厂类来创建 Scala 案例类。
有没有一种迭代器方式可以从单义性生成案例类对象(我确实找到了 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())
}
【问题讨论】: