MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
2024-10-20 11:31:54
为了序列化原生的容器对象例如 List 和 Map
对象,你必须使用 Template
。
Template 对象是
serializer 和 deserializer 的配对。例如,为了序列化一个 List
对象,在 List
对象中 Integer
对象为元素,你可以使用下面的方法来创建一个模板对象(Template object)。
Template listTmpl = Templates.tList(Templates.TInteger);
类 tList,
TInteger
是静态方法,字段为 Templates。
一个 List
和 Map
对象的用例如下显示:
package com.insight.demo.msgpack; import org.junit.Test;
import org.msgpack.MessagePack;
import org.msgpack.packer.Packer;
import org.msgpack.template.Template;
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;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import static org.msgpack.template.Templates.*; /**
* MessagePack6Template
*
* @author yhu
*/
public class MessagePack6Template {
final Logger logger = LoggerFactory.getLogger(MessagePack6Template.class); /**
* Test MessagePack6Template
*/
@Test
public void testMessagePack6Template() {
logger.debug("MessagePack6Template for Template"); MessagePack msgpack = new MessagePack();
try { // Create templates for serializing/deserializing List and Map objects
Template<List<String>> listTmpl = tList(TString);
Template<Map<String, String>> mapTmpl = tMap(TString, TString); //
// Serialization
// ByteArrayOutputStream out = new ByteArrayOutputStream();
Packer packer = msgpack.createPacker(out); // Serialize List object
List<String> list = new ArrayList<String>();
list.add("msgpack");
list.add("for");
list.add("java");
packer.write(list); // List object // Serialize Map object
Map<String, String> map = new HashMap<String, String>();
map.put("sadayuki", "furuhashi");
map.put("muga", "nishizawa");
packer.write(map); // Map object //
// Deserialization
// byte[] bytes = out.toByteArray();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
Unpacker unpacker = msgpack.createUnpacker(in); // to List object
List<String> dstList = unpacker.read(listTmpl); // to Map object
Map<String, String> dstMap = unpacker.read(mapTmpl); } catch (Exception ex) {
logger.error("MessagePack Serialization And Deserialization error", ex);
}
}
}
https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X
最新文章
- Android DownloadProvider学习 (二)
- 使用Concurrency Visualizer优化性能
- Python学习教程
- ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
- js自定义弹窗
- LVS--NAT模型配置
- DDDD
- InstallShield limited edition 生成单个 setup.exe 安装文件
- CC++初学者编程教程(16) 搭建Xcode cocos2dx开发环境
- Python中执行系统命令常见的几种方法--转载
- hdu1561 The more, The Better 树形DP+分组背包
- PHP基础入门(二)【PHP函数基础】
- Kotlin(二) 函数定义
- Python网络爬虫与信息提取(二)—— BeautifulSoup
- Jvm 内存模型 —— GC
- awk 复习
- Trimmomatic过滤Illumina低质量序列
- jsp标准动作
- python 写hive循环脚本
- 对于socket发送数据时是否要加锁及write read的阻塞非阻塞