为了序列化原生的容器对象例如  List 和 Map 对象,你必须使用 Template

Template 对象是 serializer 和 deserializer 的配对。例如,为了序列化一个 List 对象,在 List 对象中 Integer 对象为元素,你可以使用下面的方法来创建一个模板对象(Template object)。

Template listTmpl = Templates.tList(Templates.TInteger);

类 tList, TInteger 是静态方法,字段为 Templates。

一个 List 和 Map 对象的用例如下显示:

本代码可以在 https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Template.java 中查看。

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

最新文章

  1. Android DownloadProvider学习 (二)
  2. 使用Concurrency Visualizer优化性能
  3. Python学习教程
  4. ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
  5. js自定义弹窗
  6. LVS--NAT模型配置
  7. DDDD
  8. InstallShield limited edition 生成单个 setup.exe 安装文件
  9. CC++初学者编程教程(16) 搭建Xcode cocos2dx开发环境
  10. Python中执行系统命令常见的几种方法--转载
  11. hdu1561 The more, The Better 树形DP+分组背包
  12. PHP基础入门(二)【PHP函数基础】
  13. Kotlin(二) 函数定义
  14. Python网络爬虫与信息提取(二)—— BeautifulSoup
  15. Jvm 内存模型 —— GC
  16. awk 复习
  17. Trimmomatic过滤Illumina低质量序列
  18. jsp标准动作
  19. python 写hive循环脚本
  20. 对于socket发送数据时是否要加锁及write read的阻塞非阻塞

热门文章

  1. 二维数组(解引用、指针数组、数组的指针)——C语言
  2. mysql-tpcc测试
  3. T100——英文版凭证报表
  4. Docker——手动创建镜像
  5. Java EE HttpServletRequest接口和HttpServletResponse接口
  6. OnVScroll的通常处理
  7. 04docker容器操作
  8. js 动态添加Table tr,选中与不选中checkbox行数NO的变化
  9. Android-分享多图到微信好友
  10. Springboot 测试类没有找到bean注入