`

msgpack

 
阅读更多
msgpack简介 
MessagePack是一个基于二进制高效的对象序列化Library用于跨语言通信。 
它可以像JSON那样,在许多种语言之间交换结构对象;但是它比JSON更快速也更轻巧。 
支持Python、Ruby、Java、C/C++、Javascript等众多语言。 
比Google Protocol Buffers还要快4倍 

1. 下载 msgpack-0.5.1-devel.jar 
    建议从Maven仓库下 可能依赖的 jar 
    slf4j-api-1.4.3.jar 
    slf4j-log4j12-1.4.3.jar 
    log4j-1.2.13.jar 
    javassist-3.12.1.GA.jar 

2.  对JavaBean操作 
Java代码  收藏代码
  1. package com.mytest;  
  2.   
  3. /** 
  4.  *  
  5.  * 功能描述: 
  6.  *  
  7.  * @author lw 
  8.  * @created 2011-6-9 下午01:55:29 
  9.  * @version 1.0.0 
  10.  * @date 2011-6-9 下午01:55:29 
  11.  */  
  12.   
  13. import java.io.Serializable;  
  14.   
  15. import org.msgpack.annotation.MessagePackMessage;  
  16.   
  17. @MessagePackMessage    
  18. // Annotation  
  19. public class BeanClass implements Serializable{  
  20.     /** 
  21.      *  
  22.      */  
  23.     private static final long serialVersionUID = 1L;  
  24.       
  25.     // public fields are serialized.  
  26.     public String str;  
  27.     public double num;  
  28.     public String info;  
  29. }  


Java代码  收藏代码
  1. package com.mytest;  
  2.   
  3. /** 
  4.  *  
  5.  * 功能描述: 
  6.  *  
  7.  * @author lw 
  8.  * @created 2011-6-9 下午01:55:29 
  9.  * @version 1.0.0 
  10.  * @date 2011-6-9 下午01:55:29 
  11.  */  
  12. import java.util.HashMap;  
  13.   
  14. import org.msgpack.MessagePack;  
  15.   
  16. public class BeanMain {  
  17.   
  18.     public static void main(String[] args) {  
  19.         BeanClass src = new BeanClass();  
  20.         src.str = "msgpack";  
  21.         src.num = 0.5;  
  22.         src.info = "This is msgpack";  
  23.         HashMap<String, String> map = new HashMap<String, String>();  
  24.         map.put("src""src----");  
  25.   
  26.         // Serialize  
  27.         byte[] raw = MessagePack.pack(src);  
  28.   
  29.         // Deserialize  
  30.         BeanClass dst = MessagePack.unpack(raw, BeanClass.class);  
  31.         System.out.println(dst.str + ":" + dst.num);  
  32.     }  
  33. }  

3.  对Map,List操作 
Java代码  收藏代码
  1. package com.mytest;  
  2.   
  3. import static org.msgpack.Templates.TAny;  
  4. import static org.msgpack.Templates.TString;  
  5. import static org.msgpack.Templates.tList;  
  6. import static org.msgpack.Templates.tMap;  
  7.   
  8. import java.util.ArrayList;  
  9. import java.util.HashMap;  
  10. import java.util.Iterator;  
  11. import java.util.List;  
  12. import java.util.Map;  
  13.   
  14. import org.msgpack.MessagePack;  
  15. import org.msgpack.Template;  
  16. import org.msgpack.object.ArrayType;  
  17. import org.msgpack.object.BooleanType;  
  18. import org.msgpack.object.FloatType;  
  19. import org.msgpack.object.IntegerType;  
  20. import org.msgpack.object.RawType;  
  21.   
  22. /** 
  23.  *  
  24.  * 功能描述: 
  25.  *  
  26.  * @author lw 
  27.  * @created 2011-6-13 上午09:33:11 
  28.  * @version 1.0.0 
  29.  * @date 2011-6-13 上午09:33:11 
  30.  */  
  31.   
  32. public class RawTypeUtil {  
  33.       
  34.     /** 
  35.      *  
  36.      * Object 
  37.      * 
  38.      * @param arg0 
  39.      * @return 
  40.      */  
  41.     public static Object unpackToObject(byte[] arg0) {  
  42.         return unpackToObject(arg0, TAny);  
  43.     }  
  44.       
  45.     /** 
  46.      *  
  47.      * Object 
  48.      * 
  49.      * @param arg0 
  50.      * @param arg1 
  51.      * @return 
  52.      */  
  53.     public static Object unpackToObject(byte[] arg0, Template arg1) {  
  54.         Object obj = (Object) MessagePack.unpack(arg0, arg1);  
  55.         return rawObjToObj(obj);  
  56.     }  
  57.       
  58.     /** 
  59.      *  
  60.      * Map 
  61.      * 
  62.      * @param arg0 
  63.      * @return 
  64.      */  
  65.     public static Map<String, Object> unpackToMap(byte[] arg0) {  
  66.         return unpackToMap(arg0, tMap(TString, TAny));  
  67.     }  
  68.       
  69.     /** 
  70.      *  
  71.      * Map 
  72.      * 
  73.      * @param arg0 
  74.      * @param arg1 
  75.      * @return 
  76.      */  
  77.     public static Map<String, Object> unpackToMap(byte[] arg0, Template arg1) {  
  78.         @SuppressWarnings("unchecked")  
  79.         Map<String, Object> dst = (Map<String, Object>) MessagePack.unpack(arg0, arg1);  
  80.         return rawtypeMapConvert(dst);  
  81.     }  
  82.       
  83.     /** 
  84.      *  
  85.      * List 
  86.      * 
  87.      * @param arg0 
  88.      * @return 
  89.      */  
  90.     public static List<Map<String, Object>> unpackToList(byte[] arg0) {  
  91.         return unpackToList(arg0, tList(tMap(TString, TAny)));  
  92.     }  
  93.       
  94.     /** 
  95.      *  
  96.      * List 
  97.      * 
  98.      * @param arg0 
  99.      * @param arg1 
  100.      * @return 
  101.      */  
  102.     public static List<Map<String, Object>> unpackToList(byte[] arg0, Template arg1) {  
  103.         @SuppressWarnings("unchecked")  
  104.         List<Map<String, Object>> dst = (List<Map<String, Object>>) MessagePack.unpack(arg0, arg1);  
  105.         return rawtypeListConvert(dst);  
  106.     }  
  107.       
  108.     private static List<Map<String, Object>> rawtypeListConvert(final List<Map<String, Object>> list) {  
  109.         List<Map<String,Object>> rList = new ArrayList<Map<String,Object>>();  
  110.         Map<String, Object> map = new HashMap<String, Object>();  
  111.         for(Map<String, Object> s : list) {  
  112.             map = rawtypeMapConvert(s);  
  113.             rList.add(map);  
  114.         }  
  115.         return rList;  
  116.     }  
  117.       
  118.     private static Map<String, Object> rawtypeMapConvert (  
  119.             final Map<String, Object> params) {  
  120.         Map<String, Object> rParams = new HashMap<String, Object>(0);  
  121.         Iterator<String> iterator = params.keySet().iterator();  
  122.         while (iterator.hasNext()) {  
  123.             String key = (String) iterator.next();  
  124.             Object objResu = rawObjToObj(params.get(key));  
  125.             rParams.put(key, objResu);  
  126.         }  
  127.         return rParams;  
  128.     }  
  129.   
  130.     private static Object rawObjToObj(Object obj) {  
  131.         Object objResu = null;  
  132.         if (obj instanceof IntegerType) {  
  133.             objResu = ((IntegerType) obj).asInt();  
  134.         } else if (obj instanceof ArrayType) {  
  135.             objResu = ((ArrayType) obj).asArray();  
  136.         } else if (obj instanceof BooleanType) {  
  137.             objResu = ((BooleanType) obj).asBoolean();  
  138.         } else if (obj instanceof FloatType) {  
  139.             objResu = ((FloatType) obj).asFloat();  
  140.         } else {  
  141.             objResu = ((RawType) obj).asString();  
  142.         }  
  143.         return objResu;  
  144.     }  
  145. }  


Java代码  收藏代码
  1. package com.mytest;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import org.msgpack.MessagePack;  
  7.   
  8. /** 
  9.  *  
  10.  * 功能描述: 
  11.  *  
  12.  * @author lw 
  13.  * @created 2011-6-13 上午09:12:07 
  14.  * @version 1.0.0 
  15.  * @date 2011-6-13 上午09:12:07 
  16.  */  
  17.   
  18. public class MapMain {  
  19.     public static void main(String[] args) {  
  20.         Map<String, Object> map = new HashMap<String, Object>();  
  21.         map.put("t""aa1");  
  22.         map.put("f"111);  
  23.   
  24.         byte[] raw = MessagePack.pack(map);  
  25.   
  26.         map = RawTypeUtil.unpackToMap(raw);  
  27.         System.out.println(map.get("t").toString() + " : "  
  28.                 + map.get("f").toString());  
  29.     }  
  30. }  


Java代码  收藏代码
  1. package com.mytest;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import org.msgpack.MessagePack;  
  9.   
  10. /** 
  11.  *  
  12.  *  
  13.  * 功能描述: 
  14.  *  
  15.  * @author lw 
  16.  * @created 2011-6-13 上午09:12:30 
  17.  * @version 1.0.0 
  18.  * @date 2011-6-13 上午09:12:30 
  19.  */  
  20. public class ListMain {  
  21.   
  22.     public static void main(String[] args) {  
  23.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  24.         Map<String, Object> map1 = new HashMap<String, Object>();  
  25.         map1.put("t""aa1");  
  26.         map1.put("f"111);  
  27.         Map<String, Object> map2 = new HashMap<String, Object>();  
  28.         map2.put("t""aa2");  
  29.         map2.put("f"333);  
  30.         list.add(map1);  
  31.         list.add(map2);  
  32.   
  33.         byte[] raw = MessagePack.pack(list);  
  34.         List<Map<String, Object>> rList = new ArrayList<Map<String, Object>>();  
  35.         rList = RawTypeUtil.unpackToList(raw);  
  36.         for (Map<String, Object> s : rList) {  
  37.             System.out.println(s.get("t") + " : " + s.get("f"));  
  38.         }  
  39.     }  
  40. }  
 
分享到:
评论
1 楼 lvzhou_31 2015-04-22  
能不能把msgpack-0.5.1-devel.jar给下。maven中没找到

相关推荐

    msgpack和msgpack-python包.zip

    标题中的"msgpack和msgpack-python包.zip"指的是一个包含两个关键组件的压缩文件:msgpack和msgpack-python。这两个组件在Python编程中用于数据序列化和反序列化,是机器学习和数据处理领域常用的技术。 msgpack...

    msgpack(C语言)简单用例

    **msgpack(C语言)简单用例** MsgPack(MessagePack)是一种高效的二进制序列化格式,用于在各种编程语言之间交换数据。它类似于JSON,但速度更快,占用的存储空间更小。在C语言中使用MsgPack可以提高程序的性能,...

    C/C++ msgpack头文件和应用实例整理

    **msgpack介绍** Msgpack(MessagePack)是一种高效的数据序列化协议,类似于JSON,但速度更快,体积更小。它广泛应用于分布式系统、网络通信和数据存储等领域,尤其是在需要快速处理大量数据的C/C++程序中。...

    msgpack-python-0.4.2.tar

    /msgpack/msgpack-python What's this ------------ `MessagePack &lt;http://msgpack.org/&gt;`_ is a fast, compact binary serialization format, suitable for similar data to JSON. This package provides CPython...

    msgpack工具库二进制格式序列化反序列化

    **msgpack工具库详解** MsgPack(MessagePack)是一种高效的二进制序列化格式,它允许数据以紧凑的形式存储和传输。MsgPack的目标是比JSON更快、更小,同时保持可读性,使得数据在不同系统间进行交换变得更加便捷。...

    iOS 开发 使用msgpack传输数据

    在iOS开发中,数据传输是应用与服务器交互的关键环节,而`msgpack`(MessagePack)是一种高效的二进制序列化格式,常用于快速、低带宽的数据交换。本篇文章将深入探讨如何在iOS开发中利用msgpack进行数据转换和传输...

    msgpack库封装模块

    最近研究cc直播协yi的时候,发现他的xx使用了msgpack封装有关于msgpack的介绍,官方是这样说的:比json更小的储存量,但是却和json相似。实际上也就是一系列的字节操作,对不同的类型设置了不用的标识,uint8-64,sign...

    前端项目-msgpack5.zip

    **前端项目-msgpack5.zip** 是一个包含前端项目源代码的压缩包,专注于msgpack v5的实现。Msgpack(MessagePack)是一种高效的数据序列化协议,类似于JSON,但更小、更快,适合在网络间传输数据或存储数据。在Node....

    RPC调用msgpack序列化问题分析.docx

    RPC 调用 msgpack 序列化问题分析 在本文中,我们将深入分析 RPC 调用 msgpack 序列化问题,探讨导致序列化失败的原因,并了解 msgpack 序列化的优缺点。 MsgPack 序列化简介 MsgPack 是一种高效的二进制序列化...

    Delphi msgpack序号还原TFDParams

    `msgpack`(MessagePack)是一种轻量级的二进制序列化格式,它能够高效地将数据结构转化为可传输的字节流,同时也支持反序列化回原始的数据结构。在`Delphi`中,`msgpack`通常被用来处理与服务器或中间件之间的通信...

    前端项目-msgpack-lite.zip

    **前端项目-msgpack-lite.zip** 是一个包含轻量级 MessagePack 编码解码器的前端项目,专注于在JavaScript环境中实现高效的数据序列化。MessagePack是一种二进制序列化格式,它比JSON更快、更小,特别适用于网络传输...

    msgpack-java-main.zip

    "msgpack-java-main.zip"这个压缩包很可能包含了MessagePack在Java中的主要实现,包括核心库、示例代码、文档或者测试用例等。通常,这样的库会提供API,让开发者能够轻松地在Java程序中集成MessagePack的功能。 ...

    swift-Swift的MsgPack序列化和反序列化器

    Swift中的MsgPack(MessagePack)是一种高效的二进制序列化格式,它允许将数据结构转换为字节流,便于在网络间传输或者存储。MsgPack在许多编程语言中都有支持,包括Swift。在Swift中,使用MsgPack进行序列化和反...

    PyPI 官网下载 | msgpack-numpy-0.4.0.tar.gz

    《PyPI官网下载 | msgpack-numpy-0.4.0.tar.gz——Python中的高效数据序列化库》 在Python的开发过程中,数据序列化是一个不可或缺的环节,它能够将复杂的数据结构转换为可存储或可传输的形式。msgpack-numpy就是...

    msgpack-0.5.7

    **msgpack-0.5.7 知识点详解** `msgpack` 是一个高效的二进制序列化库,它的全称是 MessagePack,它能够将数据结构转换为二进制格式,便于在网络间快速传输或者存储。在 `msgpack-0.5.7` 版本中,我们关注的重点是...

    Python库 | msgpack-1.0.2-cp37-cp37m-win32.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:msgpack-1.0.2-cp37-cp37m-win32.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    msgpack-java-master

    msgpack - MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small.

    Python库 | msgpack-0.5.1-cp27-cp27m-manylinux1_x86_64.whl

    python库。 资源全名:msgpack-0.5.1-cp27-cp27m-manylinux1_x86_64.whl

    通信中使用的数据格式(xml,json,pb.msgpack)

    在IT行业中,数据格式的选择对于通信效率和数据交换的便捷性至关重要。常见的数据格式有XML、JSON、Protocol...同时,利用合适的工具和库(如protobuf编译器、json库、msgpack库等),可以简化开发工作,提高开发效率。

Global site tag (gtag.js) - Google Analytics