JAVA对象得序列化,其实很简单得一个问题。一般来说有以下几种方式来序列化:
1. 最简单得 实现 Serializable 接口, 即可实现序列化。
这种方案使用java内置得序列化规则。 序列化为二进制流,跨语言支持程度较差。 不过如果单就java使用而言, 是最方便的
2. 使用JSON框架实现序列化。
这种使用json格式进行序列化, 比如 fast-json, jjackson 等, 序列化为字符序列。 跨语言支持较好。但使用字符传输。流量开销较大。
3. 使用protobuffer实现序列化
这种基本是为IOT设备设计的,序列化为二进制流。 也是最推荐的;
框架实现了对象的编码传输压缩, 跨语言支持一般。 需要双端都使用此框架。 流量开销小。
也正是由于框架本身设计了编码规则。所以不适用于私有协议。即项目已经运行且设计之初设备端未使用protobuff框架。
4. 使用magic-byte实现序列化
此框架也是为IOT设备设计的, 序列化为二进制流。框架实现了对象到字节流的编码。 跨语言支持一般。
因为框架需要用户自己设计编码规则,所以适合私有有协议。更为灵活
https://github.com/MisterChangRay/magic-byte