MessagePack Java 0.6.X 多种类型变量的序列化和反序列化(serializati
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,类 Packer/Unpacker 允许序列化和反序列化多种类型的变量,如后续程序所示。这个类启用序列化和反序列化多种类型的变量和序列化主要类型变量以及包装类,String 对象,byte[] 对象,
千家信息网最后更新 2025年02月01日MessagePack Java 0.6.X 多种类型变量的序列化和反序列化(serializati
类 Packer
/Unpacker
允许序列化和反序列化多种类型的变量,如后续程序所示。这个类启用序列化和反序列化多种类型的变量和序列化主要类型变量以及包装类,String
对象,byte[]
对象, ByteBuffer
对象等的方法相似。
如上面提示的,你可以序列化和反序列化你自己的对象,前提是你自己的对象需要使用 @Message
注解。
package com.insight.demo.msgpack;import org.junit.Test;import org.msgpack.MessagePack;import org.msgpack.packer.Packer;import org.msgpack.unpacker.Unpacker;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.math.BigInteger;import java.nio.ByteBuffer;/** * MessagePack6Types * * @author yhu */public class MessagePack6Types { final Logger logger = LoggerFactory.getLogger(MessagePack6Types.class); /** * Test MessagePack6Types */ @Test public void testMessagePack6Types() { logger.debug("testMessagePack6Types for Types"); MessagePack msgpack = new MessagePack(); try { // // Serialization // ByteArrayOutputStream out = new ByteArrayOutputStream(); Packer packer = msgpack.createPacker(out); // Serialize values of primitive types packer.write(true); // boolean value packer.write(10); // int value packer.write(10.5); // double value // Serialize objects of primitive wrapper types packer.write(Boolean.TRUE); packer.write(new Integer(10)); packer.write(new Double(10.5)); // Serialize various types of arrays packer.write(new int[]{1, 2, 3, 4}); packer.write(new Double[]{10.5, 20.5}); packer.write(new String[]{"msg", "pack", "for", "java"}); packer.write(new byte[]{0x30, 0x31, 0x32}); // byte array // Serialize various types of other reference values packer.write("MessagePack"); // String object packer.write(ByteBuffer.wrap(new byte[]{0x30, 0x31, 0x32})); // ByteBuffer object packer.write(BigInteger.ONE); // BigInteger object // // Deserialization // byte[] bytes = out.toByteArray(); ByteArrayInputStream in = new ByteArrayInputStream(bytes); Unpacker unpacker = msgpack.createUnpacker(in); // to primitive values boolean b = unpacker.readBoolean(); // boolean value int i = unpacker.readInt(); // int value double d = unpacker.readDouble(); // double value // to primitive wrapper value Boolean wb = unpacker.read(Boolean.class); Integer wi = unpacker.read(Integer.class); Double wd = unpacker.read(Double.class); // to arrays int[] ia = unpacker.read(int[].class); Double[] da = unpacker.read(Double[].class); String[] sa = unpacker.read(String[].class); byte[] ba = unpacker.read(byte[].class); // to String object, ByteBuffer object, BigInteger object, List object and Map object String ws = unpacker.read(String.class); ByteBuffer buf = unpacker.read(ByteBuffer.class); BigInteger bi = unpacker.read(BigInteger.class); } catch (Exception ex) { logger.error("MessagePack Serialization And Deserialization error", ex); } }}
方法 Packer#write()
允许序列化多种类型的数据。
类 Unpacker
针对反序列化二进制数据为主要变量,提供了一个反序列化方法。例如,你希望将二进制数据反序列化为 boolean
(或者 int
) 数据类型,你可以使用 Unpacker
中的 readBoolean
(或者 readInt
) 方法。
Unpacker
同时也为参考变量提供了一个读取的方法。这个方法允许为一个参考变量从二进制数据中进行反序列化。参考变量的定义为你将类型指定为一个参数。例如,你希望反序列化二进制数据到 String
(或者 byte[]
) 对象,你必须在调用 read(String.class)
(或者 read(byte[].class)
) 方法的时候定义描述。
https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X
序列
变量
方法
类型
对象
数据
多种
二进制
参考
相似
前提
参数
同时
时候
注解
程序
进制
从二
包装
提示
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
济南万宇众闻互联网科技
数据库缓存技术了解
一梦江湖安卓ios服务器
数据库的修改jsp
北京健康宝数据库电话
长鑫服务器内存
软件开发技术部门干什么
EXCEL数据分析软件开发
攀枝花网络安全服务价格
临夏软件开发专业
创建数据库的命令create
崂山区微信小程序软件开发公司
mcu-801s串口服务器
漫画网络安全为师生
dayz哔哩哔哩服务器
关于规范促进网络安全
ip地址和电脑上服务器地址
软件开发群聊名
关系数据库中的关系运算顺序
软件开发能力认证cmi
csgo 服务器在哪
运营网络安全工程技巧
安卓应用软件开发服务咨询
国产数据库 上市
计算机网络技术拍照搜题
临夏软件开发专业
网络安全法24条
c j连接数据库增删改查
好创意软件开发如何找投资
网络安全隐私问题英语作文