HelloGitHub icon indicating copy to clipboard operation
HelloGitHub copied to clipboard

【开源自荐】 Magic-Byte:一个java字节和对象相互转换工具

Open MisterChangRay opened this issue 1 year ago • 0 comments

推荐项目

  • 项目地址: 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); // 字节数组转换为对象
}

MisterChangRay avatar Nov 24 '23 09:11 MisterChangRay