MessagePack的使用 - 直接传输自定义的对象

要直接使用自定义的对象进行传输,需要继承AbstractTemplate该类

自定义的对象,一定要有@Message注解,负责会报错:

@Message
public class TestObj {

    private int age;

    private String name;

    private long phone;

    private double score;

    public TestObj() {
        // TODO Auto-generated constructor stub
    }

    public TestObj(int age,String name,long phone,double score) {
        this.age = age;
        this.name = name;
        this.phone = phone;
        this.score = score;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getPhone() {
        return phone;
    }

    public void setPhone(long phone) {
        this.phone = phone;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

}

该对象对应的template类

 1 public class TestTemplate  extends AbstractTemplate<TestObj> {
 2
 3
 4     @Override
 5     public void write(Packer pk, TestObj target, boolean required)
 6             throws IOException {
 7          if(target == null)
 8             {
 9                 if(required)
10                 {
11                     throw new MessageTypeException("Attempted to write null");
12                 } else
13                 {
14                     pk.writeNil();
15                     return;
16                 }
17             } else
18             {
19                 pk.write(target);
20                 return;
21             }
22     }
23
24     @Override
25     public TestObj read(Unpacker u, TestObj target, boolean required)
26             throws IOException {
27
28         if(!required && u.trySkipNil())
29             return null;
30         else
31             return u.read(TestObj.class);
32     }
33
34      public static TestTemplate getInstance()
35         {
36             return instance;
37         }
38
39
40         static final TestTemplate instance = new TestTemplate();
41
42 }
时间: 2024-10-06 06:55:53

MessagePack的使用 - 直接传输自定义的对象的相关文章

IOS调用WCF提供的服务方法,但是方法的参数是WCF那边自定义的对象,这样有办法调用么,如果可以IOS应该怎么传参呢?请问有了解的么,

最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想到其中碰到不少问题,在网上搜索很久一直没有想到的解决方案,最后实现对数据流的分段写入然后后端再来解析流实现的此功能:后端运用WCF中的REST来接收数据:REST还是比较简单的知识,若是不懂可以简单网上了解一下:下面我们先了解一些本次运用到的理论知识: 一:理论知识 由于低层协议特性限制,WCF的流模式只支持如下四种:1:BasicHttpBi

Laravel 5.5 的自定义验证对象/类

本文和大家分享的主要是Laravel 5.5 的自定义验证对象/类相关内容,一起来看看吧,希望对大家学习Laravel有所帮助. Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代. Laravel 中的表单验证是比较方便的,而且内置了大量的可用验证规则,但不管官方提供了多少,总还是会有满足不了需求的时候.很多时候我们会直接用正则表达式来处理这种特殊的验证,也有时候我们会选择用 Validator::extend来扩展一个自

自定义动态对象

1,自定义动态对象需要继承DynamicObject类 2,可根据需要,重写不同的DynamicObject方法 -----------------------------------------------------DynamicClass.cs  using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using S

在JavaScript中生成自定义的对象

使用对象便于组织信息.下面我们介绍如何在JavaScript中生成自定义的对象. ---------------------- JavaScript 对象 在前面几章中我们学到JavaScript中有些内置的对象,比如String, Date, Array等等.除此之外,你还可以定义自己的对象. 对象是一种特殊的数据,含有属性和函数. 下面让我们用一个例子来说明:比如一个人是一个对象.属性是与对象有联系的值,比如人的属性包括姓名,身高,体重,年龄,肤色,眼睛的颜色等等.所有人都有这些属性,但是每

QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers

对NSArray中自定义的对象进行排序

本文译自How to sort NSArray with custom objects. 我们开发的每个程序都会使用到一些数据,而这些数据一般被封装在一个自定义的类中.例如一个音乐程序可能会有一个Song类,聊天程序则又一个Friend类,点菜程序会有一个Recipe类等.有时候我们希望在程序中显示的列表数据是按照一定顺序进行排列的,本文我们就来看看在iOS中有哪些方法可以对NSArray中的对象进行排序.下面是目录: 小引 使用NSComparator进行排序 使用NSDescriptor进行

NSUserDefaults写入和读取自定义的对象

需要写入的对象必须实现NSCoding protocol Person Class Person.h #import <Foundation/Foundation.h> #import "Face.h" @interface Person : NSObject <NSCoding> @property (nonatomic, strong) NSString *personId; @property (nonatomic, strong) NSString *n

Java 将自定义的对象作为HashMap的key

需要继承Map的equals函数和hashCode函数 package com.category; import java.util.HashMap; public class GenCategoryLevelData { private static HashMap<Category, Integer> categoryLevel = new HashMap<Category, Integer>(); /** * @param args */ public static void

构造函数模式自定义js对象

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 自定义javascript对象一: 定义一个函数的时候,首字母大小,默认为构造函数了 构造函数模式: 格式:function MyObjec