常见的序列化方式有有 XML JSON 以及二进制,XML 和 JSON 因为都是文本,在有些场景并不合适使用,自带的二进制序列化产生的干扰太多,于是上全球最大的同性交友网站上找了一个序列化库,这货很好用,并且还支持 .NET Core 和 Unity。
Github:https://github.com/neuecc/ZeroFormatter
Nuget:https://www.nuget.org/packages/ZeroFormatter
推荐用 PM 安装:
PM> Install-Package ZeroFormatter
将你的需要序列化的类标记为 ZeroFormattable ,不需要序列化的字段标记为 IgnoreFormat
[ZeroFormattable]
public class MyClass
{
// Index is key of serialization
[Index(0)]
public virtual int Age { get; set; }
[Index(1)]
public virtual string FirstName { get; set; }
[Index(2)]
public virtual string LastName { get; set; }
// When mark IgnoreFormatAttribute, out of the serialization target
[IgnoreFormat]
public string FullName { get { return FirstName + LastName; } }
[Index(3)]
public virtual IList<int> List { get; set; }
}
使用方法:
class Program
{
static void Main(string[] args)
{
var mc = new MyClass
{
Age = 99,
FirstName = "hoge",
LastName = "huga",
List = new List<int> { 1, 10, 100 }
};
var bytes = ZeroFormatterSerializer.Serialize(mc);
var mc2 = ZeroFormatterSerializer.Deserialize<MyClass>(bytes);
// ZeroFormatter.DynamicObjectSegments.MyClass
Console.WriteLine(mc2.GetType().FullName);
}
}
按照官方的例子序列化生成的 byte[] 长度只有 60 个字节!太简洁了有木有。
网友评论