千家信息网

MessagePack Java 0.6.X 动态类型

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,我们知道 Java 是一个静态类型的语言。通过输入 Value MessagePack能够实现动态的特性。Value 有方法来检查自己的类型(isIntegerType(), isArrayType(
千家信息网最后更新 2025年02月12日MessagePack Java 0.6.X 动态类型

我们知道 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 src = new ArrayList();        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 dst1 = msgpack.read(raw, tList(TString));            // Or, Deserialze to Value then convert type.            Value dynamic = msgpack.read(raw);            List 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


0