java自定义序列化对象,推一个自定义协议快速开发框架
在java中,对象的序列化方案还是很多的。但是如果是涉及到私有协议序列化,则显得比较难受。
相对于C之类的语言来说,它们天生支持将字节数据强制转换为结构体。这种跨语言通讯很多出现在iot对接。
这里推一个框架magic-byte; 可以根据协议进行数据结构定义,定义完成后可以直接进行序列化和反序列化。
例如定义一个对象:
@MagicClass(autoTrim = true)
public class Student {// 普通数据, 字符串长度为 10@MagicField(order = 1, size = 10)private String name;// 普通数据, 整数, 此字段决定后续 phones 字段长度@MagicField(order = 2)private int length;// 此List并未直接指定大小, 大小由 length 字段决定@MagicField(order = 3, dynamicSizeOf = 2)private List<Long> phones;@MagicField(order = 4)private byte age;// getter and setter ...
}
然后就可以直接进行序列化和反序列化了:
void main() {byte[] bytes = MagicByte.unpack(school); Student school2 = MagicByte.pack(bytes, Student .class); // bytes to objectSystem.out.println(school.getAge() == Student .getAge()); // out put true}
引入maven:
<dependency><groupId>io.github.misterchangray</groupId><artifactId>magic-byte</artifactId><version>2.4.1</version>
</dependency>
然后就可以直接使用了,这样开发就舒服多了。