Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Any type in scala to Array[Byte] and back

Tags:

I have a variable value declared as Any in my program.

I want to convert this value to Array[Byte].

How can I serialize to Array[Byte] and back? I found examples related to other types such as Double or Int, but not to Any.

like image 752
Ectoras Avatar asked Sep 07 '16 11:09

Ectoras


1 Answers

This should do what you need. It's pretty similar to how one would do it in 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))) } 
like image 79
Bruce Lowe Avatar answered Oct 23 '22 11:10

Bruce Lowe