将Scala中的任何类型转换为Array[Byte]并返回 [英] Convert Any type in scala to Array[Byte] and back

查看:75
本文介绍了将Scala中的任何类型转换为Array[Byte]并返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下问题:

我的程序中有一个变量值,它被声明为 Any 值.

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

我想将此值转换为字节数组..

I want to convert this value to Byte Array..

如何序列化到字节数组并返回?我找到了与 Double 或 Int 等其他类型相关的示例,但不是 Any.

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.

推荐答案

这应该可以满足您的需求.这与在 Java 中的做法非常相似.

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)))
}

这篇关于将Scala中的任何类型转换为Array[Byte]并返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆