protobuf-net
2.3.17
Jil
2.16.0
JetBrains.Annotations
2018.2.1
using System;
using System.Collections.Generic;
using System.IO;
using JetBrains.Annotations;
using Jil;
using ProtoBuf;
namespace Demo
{
[ProtoContract]
[PublicAPI]
public class Sketch
{
[ProtoMember(1)] public string Title;
[ProtoMember(2)] public List<string> Actors;
[ProtoMember(3)] public DateTime ReleaseDate;
}
internal class Program
{
public static void Main(string[] args)
{
// Test data
var data = new Sketch
{
Title = "Mückentötolin",
Actors = new List<string>
{
"Rolf Herricht",
"Hans-Joachim Preil"
},
ReleaseDate = new DateTime(1957, 1, 2)
};
// JSON
Console.WriteLine(JSON.Serialize(data));
// Serialize
var buf = new MemoryStream();
Serializer.Serialize(buf, data);
// Send to server
var packet = Convert.ToBase64String(buf.ToArray());
// Decode
var dataDecoded = Serializer.Deserialize<Sketch>(
new MemoryStream(Convert.FromBase64String(packet))
);
// JSON
Console.WriteLine(JSON.Serialize(dataDecoded));
}
}
}
{"ReleaseDate":"\/Date(-410144400000)\/","Actors":["Rolf Herricht","Hans-Joachim Preil"],"Title":"Mückentötolin"}
{"ReleaseDate":"\/Date(-410144400000)\/","Actors":["Rolf Herricht","Hans-Joachim Preil"],"Title":"Mückentötolin"}