2016-12-14 7 views
0

私はmongoDBに私のケースクラスインスタンス 'Alert'をバイナリとして保存しました。 「アラート」に現金を読み込んで入力する必要があります。scala - byte []をcaseクラスのインスタンスに変換する

私はこの

object MongoMain extends App { 
val uri = new MongoURI("url") 
    val mongoColl = MongoConnection(uri)("testdb")("alert") 
    val q = MongoDBObject("_id" -> ObjectId.massageToObjectId("5269c718ebb2e54b950a1cc1")) 
    // println(mongoColl.findOne(q)) 
    mongoColl.find(q).foreach { z ⇒ 
    z.get("message").getClass match { 
     case data: Class[Binary] ⇒ println(data.getSimpleName) 
     case _     ⇒ 
    } 
    } 
} 

にこの印刷バイト[]、すなわち、それは私がアラートに変換する必要が[]の後にバイトとしてメッセージフィールドをretrivingを試してみました。どのように私はそれを行うことができます、助けが必要です:

+3

どのようにしてバイナリとしてケースクラスを保存しましたか?そこにはどのような形式が使われましたか? Javaオブジェクトのシリアル化? – Thilo

答えて

0

以下の機能を使用するようにしてください、それが役立つことを願っています。

def deserializeAlert(data: Array[Byte]): Alert ={ 
    try { 
     val in = new ObjectInputStream(new ByteArrayInputStream(data)) 
     val alert = in.readObject.asInstanceOf[Alert] 
     in.close() 
     alert 
    } 
    catch { 
     case cnfe: ClassNotFoundException => { 
     cnfe.printStackTrace() 
     null 
     } 
     case ioe: IOException => { 
     ioe.printStackTrace() 
     null 
     } 
    } 
    } 
関連する問題