2016-09-11 24 views
1

Univocityフレームワークを使用してカスタム解析要件を実行する。 parseNext()を呼び出すことによって、各行をイベントとして出力するイテレータがありますが、「解析(ファイルファイル)」は使用しません。Univocity parser - イテレータウェイでスカラケースクラスを生成する

このScalaケースクラスは最終出力として用意されていますが、現時点では、パーサーからの出力を処理し、ファクトクラスを使用してスカラケースクラスを作成しています。

univocityからケースクラスオブジェクトを生成するイテレータの方法はありますか(BeanListProcessorが見つかりましたが、イテレータの方法ではうまくいかない)

回答は、JavaやScalaであることができ..

おかげで、 R

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()) 
    } 

答えて

1

uniVocity-parsersが持っているのBeanProcessorに各解析された豆を提出します(名前に "リスト" なし)」 beanProcessed "コールバックメソッドを実装する必要があります。 BeanListProcessorは、BeanProcessorを拡張して各オブジェクトをリストに追加する便利なクラスですが、オブジェクトを取得する唯一の方法ではありません。

CsvRoutinesオブジェクトとそのiterateメソッドを使用して、上記のコールバックを使用せずにBeanを反復処理することもできます。 this exampleを確認してください。

+0

ありがとう、ジェロニモ..助けて、私はあなたがUnivocityを開発したことをあなたの他のスレッドから知った?偉大な仕事、私は非常にパフォーマンスに感銘を受けた..私は可能な限り何らかの方法でできれば貢献したいと思いますか?乾杯、R –

+0

喜んでお手伝いし、あなたの声を聞いて貢献することに興味があります。プルリクエストを改善して提出するか、見つけたバグを報告してください。乾杯! –

関連する問題