java/scala:只对基本类型进行更快的类型感知序列化?
在scala中,我需要序列化仅限于一小部分基本类型的对象:array、list、map、set、int、boolean等。我希望能够以保留序列化格式的类型信息的方式序列化和反序列化这些对象。具体地说,如果我序列化了一个数组[Any],我希望能够对它进行反序列化,并且只指定结果对象是Array[Any]。也就是说,我不想为我要序列化的每一件事情都指定一个结构定义。同时,它需要能够区分int和long、tuple和array等
例如:
val obj = Array[Any](...) // can have any basic types in here
val ser = serialize(obj)
val newObj = deserialize[Array[Any]](ser) // recovers the exact types from the original obj
json不适合这种情况,因为它具有从scala类型到json类型的多对一映射。我目前正在使用java序列化,但速度非常慢。因为我不需要序列化任何任意的对象类型,有没有一种更快的方法来替代我的狭义用例
# 1 楼答案
我不关心库支持的速度或可用性,但您看过ASN.1吗
# 2 楼答案
我会使用这样一个简单的界面:
以及一个enum来实现它:
现在,您可以通过以下方式编写代码:
(虽然您可以选择不同的序列化格式,但使用枚举策略模式可能仍然是一个好主意)