Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

C#でJSONを扱うときはSystem.Text.Jsonを使う

$
0
0

はじめに

「C# JSON」とかで検索するとDataContractJsonSerializerかJson.NETを解説した記事がよくヒットします。
しかし、DataContractJsonSerializer クラスのページを見ると「JSON へのシリアル化と JSON からの逆シリアル化を含むほとんどのシナリオでは、system.string名前空間のツールを使用することをお勧めします。」と書いてるので、使えるならこっちを使った方がよいと思います。

使用条件

.NET での JSON のシリアル化-概要から抜粋。

.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]みたいなアノテーションが不要。

参考

文中でも取り上げましたが再度まとめ。


Viewing all articles
Browse latest Browse all 8901

Trending Articles