2013-03-25 13 views
15

ScalaのAvroの作業を容易にするために、.avroファイルで保存されたスキーマに基づいてケースクラスを定義したいと思います。私は試してみることができます:Avraスキーマ定義からScalaケースクラス定義を取得できますか?

  1. 手で.scalaのケースクラス定義を書く。
  2. プログラム.scalaファイル
  3. 偽装 ObjectWebののASM
  4. SpecificCompilerのトリックのようなバイトコードライブラリの場合のクラス定義に文字列を書き込むこと?
  5. 実行時に既存のケースで分類された定義を変更しますか?

ありがとう、アドバイスをいただければ幸いです。 -Julian

答えて

14

私はScalavroと呼ばれる小さなプロジェクトをハッキングしています(スカラタイプからAvroスキーマへ)。また、ダイレクトバイナリI/Oも提供します。

簡単な例:

{ 
    "name": "Person", 
    "type": "record", 
    "fields": [ 
    {"name": "name", "type": "string"}, 
    {"name": "age", "type": "int"} 
    ], 
    "namespace": "com.gensler.scalavro.tests" 
} 

を(上記のリンク)プロジェクトサイト上やscalatest仕様で、より多くの例があります得

package com.gensler.scalavro.tests 
import com.gensler.scalavro.types.AvroType 

case class Person(name: String, age: Int) 

val personAvroType = AvroType[Person] 
personAvroType.schema 

私は近いうちにSonatype OSSでバイナリをホストする計画がありますが、今のところgithubとsbt publish-localからソースを引き出すことができます。

更新:
Scalavroは、Mavenの中央で使用できるようになりました。

+0

非常にいいです。良い仕事を続けてください。あなたはコンパイル時のリフレクションバージョンがどこにあるのかを考えていますか? –

+0

まだ、それは本当に楽しいプロジェクトになります。お手伝いしたいですか? –

関連する問題