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 object
        System.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>

然后就可以直接使用了,这样开发就舒服多了。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值