dotnet 使用 MessagePack 序列化对象
和很多序列化库一样,可以通过 MessagePack 序列化和反序列化,和 json 相比这个库提供了二进制的序列化,序列化之后的内容长度比 json 小很多
这个库能序列的内容不多,大多数时候建议使用的序列的类都是只有基础的 int 和 bool 字符串等,最好不要存在复杂的类
使用 MessagePack 的好处只是序列化出来的内容的长度小,但是从性能等方面,其实和 Json 差别不大,在序列化简单的类的时候,可以看到 MessagePack 的序列化速度会比较快。在序列化比较大的类如果序列化到文件,那么因为文件读写的性能,可以看到 MessagePack 的性能明显比 json 好。
在使用 MessagePack 之前需要通过 Nuget 安装
安装方法是在 Nuget 输入 MessagePack 安装
下面写一个简单的方法,将会对这个类序列化
[MessagePackObject]
public class Foo
{
[Key(0)]
public string Lindexi { set; get; }
}
现在主函数创建这个类
var foo = new Foo { Lindexi = "林德熙是逗比" };
通过 MessagePackSerializer.Serialize 方法可以将一个类序列化为 byte 数组,或序列化到 stream 也就是可以直接序列化到文件
var byteList = MessagePackSerializer.Serialize(foo);
如果想要看 byteList 的内容,可以使用下面方法将 byte 数组转字符串
Console.WriteLine(ByteListToString(byteList));
private static string ByteListToString(byte[] byteList)
{
return string.Concat(byteList.Select(temp => temp.ToString("x2")));
}
使用下面代码可以反序列化
foo = MessagePackSerializer.Deserialize<Foo>(byteList);
Console.WriteLine(foo.Lindexi);
我尝试运行代码,可以看到下面代码
91b2e69e97e5beb7e78699e698afe98097e6af94
林德熙是逗比
前面是将 Foo 序列化的二进制
如果在使用的时候发现下面代码,那么很多时候都是因为没有在类上面添加特性,需要修改类为公开的,然后在类上面添加 MessagePackObject 特性,然后在每个公开属性上面添加 Key 特性,同时输入这个属性是在哪个顺序
MessagePack.FormatterNotRegisteredException:“KouhoofamerNeejirstistedrea.Foo is not registered in this resolver. resolver:StandardResolver”
github:msgpack/msgpack-cli
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
dotnet 使用 MessagePack 序列化对象的更多相关文章
- (六)分布式通信----MessagePack序列化
1. .Net Core的序列化方式 1.1 json.Net 常用的工具包,如Newtonsoft.Json, 它是基于json格式的序列化和反序列化的组件 json.net 有以下优点: 侵入性: ...
- .NET Core 序列化对象输出字节数大小比较
写代码验证了一下 .NET Core 中序列化对象输出字节数大小,.NET Core 版本是 3.0.100-preview8-013656 ,对象属性使用了 Guid 与 DateTime 类型,胜 ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- Android使用HttpURLConnection通过POST方式发送java序列化对象
使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...
- 序列化对象为xml字符串
/// <summary> /// 序列化对象为xml字符串 /// </summary> /// <param name="obj" ...
- Serializable序列化对象
Serializable序列化对象发送: Intent intent = new Intent(); intent.setClass(mContext, HomeDetailReportActivit ...
- C# 使用XML序列化对象(二)
在C# 使用XML序列化对象(一)中描述了使用XML序列化对象的最简单的实现. 现在我们来看看稍微复杂一点的情况: 现有两个类:A和B,B是A的派生类,如下所示: public class A { p ...
- Android 使用Parcelable序列化对象
转:http://ipjmc.iteye.com/blog/1314145 Android序列化对象主要有两种方法,实现Serializable接口.或者实现Parcelable接口.实现 ...
- Android中序列化对象到XMl 和 XML反序列化为对象
package com.example.xmloperation; import java.io.File; import java.io.FileOutputStream; import java. ...
随机推荐
- 阿里云文件存储CPFS正式商业化,提供云上高性能并行文件系统
2018年3月份,阿里云推出文件存储CPFS产品.在经过近一年的上线公测后,CPFS即将迎来商业化,将为更多的客户提供云上高性能的并行文件存储. 坚如磐石的高性能计算存储 文件存储CPFS针对计算密集 ...
- 2017校赛 C: 不爱学习的小W【模拟】
题目描述 “叮铃铃”上课了,同学们都及时到了教室坐到了座位上,教室里有n行m列的座位而且刚好坐满.既然是上课,那老师叫学生回答问题就是再正常不过的事了,同样地,教室里也就有爱学习和不爱学习的学生了,爱 ...
- .net 数据表格显示控件
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/chenjinge7/article/details/30470609 1. GridView 控件 ...
- qt .pro文件和cmakelists.txt配置第三方库
.pro文件引用第三方库文件和头文件路径 1.库文件(LIBS添加的是共享库文件,-L添加目录,-l指定共享库名称) LIBS += -L/usr/local/lib -lmath LIBS的使用就是 ...
- PHP程序连接Redis报read error on connection问题
线上PHP程序动不动就报PHP Fatal error: Uncaught RedisException: read error on connection错误,就是连接Redis在那么1秒钟有问题, ...
- Uva 10074【递推dp】
UVa 10074 题意:求01矩阵的最大子0矩阵. http://www.csie.ntnu.edu.tw/~u91029/MaximumSubarray.html#2 这里说的很清楚.先求Larg ...
- 蓝牙(3)蓝牙UUID与SDP
1.服务发现协议 (SDP) SDP = Service Discovery Protocol 主要用来根据已分配编号(UUID)搜索服务.浏览群组列表.文档 URL 和图标 URL等. 详细见: ...
- html选择题
1.下面关于css样式和html样式的不同之处说法正确的是(A) A.html样式只影响应用它的文本和使用所选html样式创建的文本 B.css样式只可以设置文字字体样式 不仅仅能够设置 ...
- functiils.lru_cache缩短递归时间
力扣上看到一道题: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 使用普通递归解决,超出时间限 ...
- 31页PPT:基于Spark的移动大数据挖掘
31页PPT:基于Spark的移动大数据挖掘 数盟11.16 Data Science Meetup(DSM北京)分享:基于Spark的移动大数据挖掘分享嘉宾:张夏天(TalkingData首席数据科 ...