Protocol Buffer-net初探--最简单的Protobuf-net应用
2018-01-16 10:02
399 查看
Protocol Buffers是一种独立于语言和平台,可扩展的序列化结构数据格式,主要用于数据存储和RPC数据交换格式。目前google提供了C++、Java、Python 三种语言的 API;包含一个Protocol Buffers编译器和一个Protocol Buffers使用的类库。
Protobuf-net官方站点:https://code.google.com/archive/p/protobuf-net
我提供的下载地址:http://download.csdn.net/download/fangjingj/10207541
Protobuf-net是第三方中最强大应用最广泛的一个,支持.Net、C#、WCF、VB
网上的示例是真的多,不过一般都很长,写了半天,核心就是两句话。。。。。。
直接贴代码:读JSON并压缩
首先将Json文件读到列表数组中,具体读的方法如下:
此处用到Newtonsoft.Json.dll
下载地址:http://download.csdn.net/download/fangjingj/10207577
将压缩后的数据反序列化出来
DEMO下载地址:http://download.csdn.net/download/fangjingj/10207596
Protobuf-net官方站点:https://code.google.com/archive/p/protobuf-net
我提供的下载地址:http://download.csdn.net/download/fangjingj/10207541
Protobuf-net是第三方中最强大应用最广泛的一个,支持.Net、C#、WCF、VB
网上的示例是真的多,不过一般都很长,写了半天,核心就是两句话。。。。。。
直接贴代码:读JSON并压缩
namespace Writer { [ProtoContract] public class Coordinate { [ProtoMember(1)] public float lon; [ProtoMember(2)] public float lat; } [ProtoContract] public class MyData { [ProtoMember(1)] public int Id; [ProtoMember(2)] public Coordinate position; [ProtoMember(3)] public float value; [ProtoMember(4)] public float angle; } class Program { static void Main(string[] args) { List<MyData> data = readJsonFile("test.json"); using (var file = System.IO.File.Create("test.bin")) { ProtoBuf.Serializer.Serialize(file, data); } } } }
首先将Json文件读到列表数组中,具体读的方法如下:
private static List<MyData> readJsonFile(string path) { List<MyData> listData = new List<MyData>(); StreamReader jsonFileStreamReader = new StreamReader(path, Encoding.Default); String jsonStr = jsonFileStreamReader.ReadToEnd(); JObject jsonJobj = (JObject)JsonConvert.DeserializeObject(jsonStr); JArray featureJarray = (JArray)jsonJobj["features"]; int dataId = 0; foreach (var item in featureJarray) { MyData data = new MyData(); data.Id = dataId; dataId++; JObject featureJobj = (JObject)item; JArray coordinateJarray = (JArray)featureJobj["geometry"]["coordinates"]; Coordinate coor = new Coordinate(); coor.lon = float.Parse(coordinateJarray[0].ToString()); coor.lat = float.Parse(coordinateJarray[1].ToString()); data.position = coor; data.value = float.Parse(featureJobj["properties"]["value"].ToString()); data.angle = float.Parse(featureJobj["properties"]["angle"].ToString()); listData.Add(data); } return listData; }
此处用到Newtonsoft.Json.dll
下载地址:http://download.csdn.net/download/fangjingj/10207577
将压缩后的数据反序列化出来
namespace Reader { [ProtoContract] public class Coordinate { [ProtoMember(1)] public float lon; [ProtoMember(2)] public float lat; } [ProtoContract] public class MyData { [ProtoMember(1)] public int Id; [ProtoMember(2)] public Coordinate position; [ProtoMember(3)] public float value; [ProtoMember(4)] public float angle; } class Program { static void Main(string[] args) { List<MyData> binData = null; using (var file = System.IO.File.OpenRead("test.bin")) { binData = ProtoBuf.Serializer.Deserialize<List<MyData>>(file); } } } }
DEMO下载地址:http://download.csdn.net/download/fangjingj/10207596
相关文章推荐
- [Unity3D]简单使用Protobuf-net(二)
- [Unity3D]简单使用Protobuf-net(三)
- [Unity3D]简单使用Protobuf-net(一)
- Unity3D使用TCP/IP协议,传递protocol buffer消息protobuf-net
- Unity3D 使用 TCP/IP 协议,传递 protocol buffer 消息( protobuf-net
- protobuf-net之简单入门
- [Unity3D]简单使用Protobuf-net(三)
- [Unity3D]简单使用Protobuf-net(一)
- [Unity3D]简单使用Protobuf-net(二)
- .NET序列化工具Jil、Json.NET和Protobuf的简单测评
- [Unity3D]简单使用Protobuf-net(三)
- Unity3D使用TCP/IP协议,传递protocol buffer消息protobuf-net
- [Unity3D]简单使用Protobuf-net(二)
- protobuf的简单应用,json和protocol Buffer的转换简单例子
- unity中简单实用protobuf(Protobuf-net)
- [Unity3D]简单使用Protobuf-net(一)
- Swift Protobuf 初探 —— 继 XML 后,JSON 也要被淘汰了吗
- protobuf的使用初探
- RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)(转)
- protobuf-net 学习手记