2016-09-07 12 views
6

私は以下の質問をします:スカラの任意の型を配列[Byte]に変換して戻す

私はプログラム内に任意の値として宣言された変数を持っています。

私は

がどのように私はバイト配列にシリアライズし、バックすることができます。..バイト配列に、この値を変換したい

?私はDoubleやIntなどの他の型に関連する例を見つけましたが、Anyではありません。

+0

あなたはそれが何であるかわからないとき、どのようにあなたが何かをシリアル化することができますか? –

+0

私は同じ質問を..それはユーザーからの入力です、それはイメージ、数字、文字列..することができますし、私はそれをDBに格納することができますArray [Byte]に変換する必要があります – Ectoras

+0

ユーザーからの入力は、すでに 'String'です。ではなぜ 'String'を格納しないのですか? –

答えて

8

これは、必要な操作を行う必要があります。これはJavaでどのように行うのかと非常に似ています。

import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream} 

object Serialization extends App { 

    def serialise(value: Any): Array[Byte] = { 
    val stream: ByteArrayOutputStream = new ByteArrayOutputStream() 
    val oos = new ObjectOutputStream(stream) 
    oos.writeObject(value) 
    oos.close 
    stream.toByteArray 
    } 

    def deserialise(bytes: Array[Byte]): Any = { 
    val ois = new ObjectInputStream(new ByteArrayInputStream(bytes)) 
    val value = ois.readObject 
    ois.close 
    value 
    } 

    println(deserialise(serialise("My Test"))) 
    println(deserialise(serialise(List(1)))) 
    println(deserialise(serialise(Map(1 -> 2)))) 
    println(deserialise(serialise(1))) 
} 
+0

ありがとうございます。私はまた、あなたの解決策との違いは何ですか? – Ectoras

-2
def anyTypeToByteArray(value: Any): Array[Byte] = { 
    val valueConverted :Array[Byte] = SerializationUtils.serialize(value.isInstanceOf[Serializable]) 
    valueConverted 
    } 

    def ByteArrayToAny(value: Array[Byte]): Any = { 
    val valueConverted: Any = SerializationUtils.deserialize(value) 
    valueConverted 
    } 
+0

あなたはサードパーティのライブラリを使用しています。 –

+0

JasperMが述べたように、これはApacheのコモンズを使用しています。あなたがそれを持っていこうとするなら、実行可能な解決策もあります。 –

+0

あなたの助けに感謝します! – Ectoras

関連する問題