Ⅰ. はじめに
タイトルの通り「C#のシリアライズ、デシリアライズ方法まとめ」です。
例として以下クラスを利用します
public class User { public required uint Id { get; set; } public required string Name { get; set; } } var users = new User[] { new() {Id = 1, Name = "user001" }, new() {Id = 2, Name = "user002" } };
Ⅱ. まとめ
Newtonsoft.Json
var json = JsonConvert.SerializeObject(users); users = JsonConvert.DeserializeObject<User[]>(json);
System.Text.Json
var json = JsonSerializer.Serialize(users); users = JsonSerializer.Deserialize<User[]>(json);
System.Text.Json (UTF-8 Bytes)
var bytes = JsonSerializer.SerializeToUtf8Bytes(users); users = JsonSerializer.Deserialize<User[]>(bytes);
MessagePack
var bytes = MessagePackSerializer.Serialize(users, ContractlessStandardResolver.Options); users = MessagePackSerializer.Deserialize<User[]>(bytes, ContractlessStandardResolver.Options); // private プロパティもシリアライズする場合は以下を指定する // MessagePack.Resolvers.DynamicObjectResolverAllowPrivate.Options
MemoryPack
+ [MemoryPackable] - public class User + partial class User { public required uint Id { get; set; } public required string Name { get; set; } }
var bytes = MemoryPackSerializer.Serialize(users); users = MemoryPackSerializer.Deserialize<User[]>(bytes);