可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have the following question:
I have a variable value in my program which is declared as Any value.
I want to convert this value to Byte Array..
How can I serialize to byte Array and back? I found examples related to other types such as Double or Int, but not as Any.
回答1:
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))) }
回答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 }