.NET中使用Protobuffer 实现序列化和反序列化
来源:互联网 发布:阿里云 端口开放 编辑:程序博客网 时间:2024/04/27 18:22
.NET中使用Protobuffer实现序列化和反序列化
1. 到官方下载protobuf-net.dll,官方地址:http://code.google.com/p/protobuf-net/
2. 建一个控制台应用程序
3. 添加类库:protobuf-net.dll到应用程序。
示例代码:
准备一个要测试的实体类(注意类和方法都要加上protoBuffer序列化的特性):
[ProtoContract] public class Student { [ProtoMember(1)] public intStudentId { get; set; } [ProtoMember(2)] public stringName { get; set; } [ProtoMember(3)] public stringClassName { get; set; } }
然后对这个类进行序列化和反序列化
using System;using System.Collections.Generic;using System.Linq;using System.Text;using ProtoBuf;using ProtoBufferDemo.Entity;using System.IO; namespace ProtoBufferDemo{ class Program { private const string TestPath = @"D:/1.txt"; static void Main(string[] args) { ////////////////////////序列化////////////////////////////// Student stu = new Student() { StudentId = 1, Name = "zhangsan", ClassName = "classOne" }; if (!File.Exists(TestPath)) { FileStream fs = File.Create(TestPath,1024, FileOptions.Asynchronous); fs.Dispose(); } Console.WriteLine("开始序列化并导出到文件..."); using (Stream s = new FileStream(TestPath,FileMode.Open ,FileAccess.ReadWrite)) { Serializer.Serialize<Student>(s, stu); s.Close(); } Console.WriteLine("序列化完毕"); //////////////////////反序列化//////////////////////////// Console.WriteLine("反序列化并输出..."); using (Stream s = new FileStream(TestPath,FileMode.Open)) { Student st = Serializer.Deserialize<Student>(s); Console.WriteLine("studentName:"+ stu.Name + "/r/n" + "studentId:"+ stu.StudentId + "/r/n" + "className:" + stu.ClassName); s.Close(); } Console.Read(); } }}
现在考虑一下多个实体的情况,测试一下序列化一个集合:
class Program { private const string TestPath = @"D:/1.txt"; static void Main(string[] args) { ////////////////////////序列化////////////////////////////// List<Student> stu = new List<Student>() { new Student(){ StudentId = 1, Name = "zhangsan", ClassName = "classOne"}, new Student(){StudentId = 2, Name = "lisi", ClassName = "classTwo"} }; if (!File.Exists(TestPath)) { FileStream fs = File.Create(TestPath,1024, FileOptions.Asynchronous); fs.Dispose(); } Console.WriteLine("开始序列化并导出文件..."); using (Stream s = new FileStream(TestPath,FileMode.Open, FileAccess.ReadWrite)) { Serializer.Serialize<List<Student>>(s,stu); s.Close(); } Console.WriteLine("序列化完毕"); //////////////////////反序列化//////////////////////////// Console.WriteLine("反序列化并输出..."); using (Stream s = new FileStream(TestPath,FileMode.Open)) { List<Student> sl = Serializer.Deserialize<List<Student>>(s); foreach (var student in sl) { Console.WriteLine("studentName:"+ student.Name + "/r/n" + "studentId:" + student.StudentId + "/r/n" + "class Name:" + student.ClassName); } s.Close(); } Console.Read(); } }
- .NET中使用Protobuffer 实现序列化和反序列化
- .NET中使用Protobuffer实现序列化和反序列化
- 使用protobuffer 序列化和反序列化出现 Invalid field in source data: 0 问题的解决
- Protobuffer 中文序列化反序列化乱码?丢失?
- ASP.NET 中 序列化和反序列化
- .Net中JSON序列化和反序列化
- .NET序列化和反序列化
- .net序列化和反序列化
- .net c# 序列化和反序列
- net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- .net c# 序列化和反序列
- 在.Net中通过序列化和反序列化实现对象实例化
- .NET Framewok 3.5 中 JSON 序列化和反序列化的简单实现
- 二维条码目前应用
- CentOS 安装rarlinux 压缩解压 .rar
- 怎么查看系统是32位还是64位的?
- c++中的常见泄漏
- 缘
- .NET中使用Protobuffer 实现序列化和反序列化
- 用__get_free_pages分配大内存
- iostat来对linux硬盘IO性能进行了解
- Linux下提高效率的命令与快捷键
- C++/C试题的答案与评分标准
- C++/C试题
- ICTCLAS JNI init fail问题的修复
- 编译Android独立分支的方法
- Linux 文件、内容查找(递归) ,grep ,find 收藏