我们知道 Java 是一个静态类型的语言。通过输入 Value MessagePack能够实现动态的特性。

Value 有方法来检查自己的类型(isIntegerType()isArrayType(), 等...),同时也转换为自己的类型 (asStringValue()convert(Template))。

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

package com.insight.demo.msgpack;

import org.junit.Test;
import org.msgpack.MessagePack;
import org.msgpack.type.Value;
import org.msgpack.unpacker.Converter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.ArrayList;
import java.util.List; import static org.msgpack.template.Templates.TString;
import static org.msgpack.template.Templates.tList; /**
 * MessagePack6Objects
 *
 * @author yhu
 */
public class MessagePack6DynamicTyping {
    final Logger logger = LoggerFactory.getLogger(MessagePack6DynamicTyping.class);     /**
     * Test MessagePack6Objects
     */
    @Test
    public void MessagePack6DynamicTyping() {
        logger.debug("MessagePack6Objects for Objects");         // Create serialize objects.
        List<String> src = new ArrayList<String>();
        src.add("msgpack");
        src.add("kumofs");
        src.add("viver");         MessagePack msgpack = new MessagePack();
         
        try {             // Serialize
            byte[] raw = msgpack.write(src);             // Deserialize directly using a template
            List<String> dst1 = msgpack.read(raw, tList(TString));             // Or, Deserialze to Value then convert type.
            Value dynamic = msgpack.read(raw);
            List<String> dst2 = new Converter(dynamic).read(tList(TString));         } 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. iOS Assigning to &#39;id&lt;XXXDelegate&gt;&#39; from incompatible type &#39;BViewController *__strong&#39;
  2. Mysql的二进制日志binlog的模式说明
  3. [转]libsvm 训练后的模型参数讲解
  4. 欧拉函数 cojs 2181. 打表
  5. 【Unity Shaders】学习笔记——SurfaceShader(七)法线贴图
  6. linux shell pushd popd dirs命令
  7. meta里面的viewport属性
  8. jsp servelet
  9. Android Service组件(1)
  10. 将MFC Grid control封装为DLL的做法及其在DLL中的使用方法
  11. [SOJ]Easy sort (归并排序)
  12. 关于JSON.parse在ie6,ie7下未定义的issue
  13. HDU-5086-Revenge of Segment Tree
  14. Block Token 原理分析
  15. Numpy快速入门——shape属性,你秒懂了吗
  16. Restful概念的理解和践行
  17. Nuxt 自动化部署及打包后文件自动上传七牛云
  18. algs4 使用 DrJava 编写 Hello World on Windows
  19. mybatis是如何防止SQL注入的
  20. python模块psutil的使用

热门文章

  1. Codeforces 1228E. Another Filling the Grid
  2. 安装jenkins时出现 No such plugin: cloudbees-folder的解决办法
  3. json在线格式化校验
  4. NSIS逻辑函数头文件介绍
  5. Centos7:MyCat安装,配置及使用
  6. HTML的学习2(注释)
  7. md加密 16位 32位
  8. python之时间日期datetime
  9. WLW模板插件Text Templat的应用举例
  10. 网络初级篇之VLAN(原理)