• MessagePack序列化对象的实例


    1、maven

    <!-- https://mvnrepository.com/artifact/org.msgpack/msgpack -->
            <dependency>
                <groupId>org.msgpack</groupId>
                <artifactId>msgpack</artifactId>
                <version>0.6.7</version>
            </dependency>

    2、被序列化的类(com.utils.User.java)

    /**
     * <p>Title: </p>
     * <p>Description: </p>
     *
     * @Author 
     * @CreateTime 
     */
    //@Message
    public class User {
     
        private Long id;
        private String provinceName;
        private Integer age;
        private Date createdTime;
     
        //这个默认构造函数必须要有,不然用Msgpack序列化时会报错
        public User() {
        }
     
        public User(Long id, String provinceName, Integer age, Date createdTime) {
            this.id = id;
            this.provinceName = provinceName;
            this.age = age;
            this.createdTime = createdTime;
        }
     
        public User buildUserId(Long id) {
            this.id = id;
            return this;
        }
     
        public User buildAge(Integer age) {
            this.age = age;
            return this;
        }
     
        public Long getId() {
            return id;
        }
     
        public void setId(Long id) {
            this.id = id;
        }
     
        public String getProvinceName() {
            return provinceName;
        }
     
        public void setProvinceName(String provinceName) {
            this.provinceName = provinceName;
        }
     
        public Integer getAge() {
            return age;
        }
     
        public void setAge(Integer age) {
            this.age = age;
        }
     
        public Date getCreatedTime() {
            return createdTime;
        }
     
        public void setCreatedTime(Date createdTime) {
            this.createdTime = createdTime;
        }
     
    }

    3.测试实例

    public static void main(String[] args) throws Exception {
            MessagePack msgpack = new MessagePack();
            try {
                User user = new User(1001L, "山西", 23, new Date());
    //            User user = new User();
    //            user.buildAge(12);
                msgpack.register(User.class);//与 @Message注解用其一即可
                byte[] serial = msgpack.write(user);
    //            User user2 = msgpack.read(serial, User.class);//可以
                User user2 = msgpack.read(serial, user);//可以
                System.out.println(user2.getAge());//12
            } catch (IOException e) {
                e.printStackTrace();
            }
    //        Exception in thread "main" org.msgpack.MessageTypeException:
    //        Cannot find template for class com.weather.weatherexpert.common.utils.MsgpackUtil$User class.
    //        Try to add @Message annotation to the class or call MessagePack.register(Type).
        }

    报错:

    1.User类的默认构造函数必须要有,不然用Msgpack序列化时会报错:no such constructor: com.utils.User 

     2.User类上需添加@Message或使用msgpack.register(User.class),否则会报错:Cannot find template for class com.utils.User class.  Try to add @Message annotation to the class or call MessagePack.register(Type).

     参考:https://blog.csdn.net/u010002184/article/details/86546133

  • 相关阅读:
    Visual Studio中Debug与Release以及x86、x64、Any CPU的区别 &&&& VS中Debug与Release、_WIN32与_WIN64的区别
    64位Windows下安装Redis教程
    让Redis在你的系统中发挥更大作用的几点建议
    Redis主从复制问题和扩容问题的解决思路
    redis常用命令小结
    Redis中5种数据结构的使用场景介绍
    redis中使用redis-dump导出、导入、还原数据实例
    Redis批量删除KEY的方法
    超强、超详细Redis数据库入门教程
    Redis总结笔记(一):安装和常用命令
  • 原文地址:https://www.cnblogs.com/vickylinj/p/15384953.html
Copyright © 2020-2023  润新知