C# System.Text.JsonでclassをJson形式の文字列に変換する
System.Text.Jsonで、classのインスタンスをJson形式の文字列(string)に変換する方法を紹介します。
Jsonを扱うライブラリといえばJson.NET(Newtonsoft.Json)を使用することが多いですが、今回は.NET Core 3.0以降の標準機能であるSystem.Text.Jsonを使用します。
例えば以下のクラスがあるとします。
Chat.cspublic class Chat
{
public Chat(int chatId, string chatName)
{
ChatId = chatId;
ChatName = chatName;
}
public int ChatId { get; set; }
public string ChatName { get; set; }
}以下のようにインスタンスを作成し、この値をJson形式の文字列に変換します。
Chat.csvar chat = new Chat(1, "チャット名");JsonSerializer.Serialize(オブジェクト)の形で、変数chatをJson形式の文字列に変換します。
using System.Text.Json;
var chat = new Chat(1, "チャット名");
string test = JsonSerializer.Serialize(chat); // 文字列に変換
Console.WriteLine(test);
// 出力結果
// {"ChatId":1,"ChatName":"\u30C1\u30E3\u30C3\u30C8\u540D"}日本語文字列はエスケープされるため、そのまま出力はされませんが、Json形式の文字列に変換されていることが確認できます。
Json形式の文字列をオブジェクトに戻す方法はC# Json形式の文字列をクラスオブジェクトに変換するで紹介しています。