はじめに
「C# JSON」とかで検索するとDataContractJsonSerializerかJson.NETを解説した記事がよくヒットします。
しかし、DataContractJsonSerializer クラスのページを見ると「JSON へのシリアル化と JSON からの逆シリアル化を含むほとんどのシナリオでは、system.string名前空間のツールを使用することをお勧めします。」と書いてるので、使えるならこっちを使った方がよいと思います。
使用条件
.NET Core 3.0の場合はデフォルトで入ってます。
.NET Standard 2.0以降、.NET Framework 4.6.1以降、.NET Core 2.0以降はSystem.Text.Jsonのnugetパッケージを入れることで使えるようになります。
使用方法
.NET で JSON をシリアル化および逆シリアル化する方法から抜粋。
シリアライズ
System.Text.Json名前空間をusingして次のようなコードでシリアライズできます。
SerializeToUtf8BytesというUTF8を高速で処理できるメソッドもあります。
stringjsonString=JsonSerializer.Serialize(serializeObj);
デシリアライズ
デシリアライズは下記のコードで行えます。
ジェネリックなのでキャストの必要が無いところがいいですね。
TestClassdeserializeObj=JsonSerializer.Deserialize<TestClass>(jsonString);
メリット
- 基本的にジェネリックメソッドなのでキャストやtypeofが必要ない。
[DataContract]
みたいなアノテーションが不要。
参考
文中でも取り上げましたが再度まとめ。