Jute 序列化 反序列化

本文介绍了一个使用Jute进行序列化和反序列化的简单示例。通过创建一个名为MockReqHeader的类,并实现Record接口的serialize和deserialize方法,演示了如何将对象状态转换为字节流以及如何从字节流中恢复对象状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来看一个jute序列化,反序列化的例子

首先创建一个实例

public class MockReqHeader implements Record {

    private long sessionId;
    private String type;

    public MockReqHeader() {
    }

    public MockReqHeader(long sessionId, String type) {
        this.sessionId = sessionId;
        this.type = type;
    }

   //... get set method

    @Override
    public void serialize(OutputArchive outputArchive, String s) throws IOException {
        outputArchive.startRecord(this, s);
        outputArchive.writeLong(sessionId, "sessionId");
        outputArchive.writeString(type, "type");
        outputArchive.endRecord(this, s);
    }

    @Override
    public void deserialize(InputArchive inputArchive, String s) throws IOException {
        inputArchive.startRecord(s);
        sessionId = inputArchive.readLong("sessionId");
        type = inputArchive.readString("type");
        inputArchive.endRecord(s);
    }
}

上面这个类反应了jute的序列化,反序列。大致有几个点需要注意下:

  • 实例类实现了Record接口的serialize、deserialize的方法
  • 构建一个序列化器OutputArchive
  • 序列化
  • 反序列化

运行一下看看

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        BinaryOutputArchive binaryOutputArchive = 
          BinaryOutputArchive.getArchive(byteArrayOutputStream);
        new MockReqHeader(666, "ok").serialize(binaryOutputArchive, "header");

        //这里通常是网络传输
        ByteBuffer byteBuffer = ByteBuffer.wrap(byteArrayOutputStream.toByteArray());

        //反序列化
        ByteBufferInputStream byteBufferInputStream = new ByteBufferInputStream(byteBuffer);
        BinaryInputArchive binaryInputArchive = 
              BinaryInputArchive.getArchive(byteBufferInputStream);
        MockReqHeader header = new MockReqHeader();
        header.deserialize(binaryInputArchive, "header");

        byteBufferInputStream.close();
        byteArrayOutputStream.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值