HelloGitHub
HelloGitHub copied to clipboard
【开源自荐】 Magic-Byte:一个java字节和对象相互转换工具
推荐项目
- 项目地址: https://github.com/MisterChangRay/magic-byte
- 类别: java
- 项目标题:一个快速字节对象转换工具,特别适合私有协议开发
- 项目描述:对于tcp层通讯来说,最常见的操作就是在对象和字节直接转换。java不像C,可以直接在字节数据和结构体之间转换。对于java开发者而言,需要花很多时间在无符号数,数据对齐,数据填充,大小端,iobuffer等等上面。 而使用magic-byte则只需要在定义类的时候同时使用注解声明数据结构,然后就可以调用函数直接进行序列化和反序列化。极大的提升开发效率!
-
亮点: 同类型项目有2006年google推的javastruct,但是项目太老没有维护,也不支持类嵌套,动态字段,消息注册绑定等特性
-
示例代码:(可选)
// 1.首先定义数据结构
@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 ...
}
//2 直接进行序列化操作
void main() {
Student student1 = new Student();
byte[] bytes = MagicByte.unpack(student); // 对象转换为字节数组
Student student2 = MagicByte.pack(bytes, School.class); // 字节数组转换为对象
}