C# - よく使うクラス - System.Text - Json

クラウディア 
1. 概要
2. 参照・using
3. Serialize シリアライズ
4. Deserialize デシリアライズ
5. JsonSerializerOptions シリアライズ書式

1. 概要

 「JSON」を使いたいのだ。  以前は、「Newtonsoft.Json.dll」てぇのを使ったりしていたようですが・・・。  すくなくとも「Visual Studio 2022」「.NET Framework 4.8」を使用していれば、「.NET Framework」で、「JSON」が使えます。  本ページは、下記のサイトを参照させていただきました。
C# で JSON をシリアル化する方法

2. 参照・using

 プロジェクトで、「System.Text.Json」を参照します。
「System.Text.Json」-「Visual Studio 2022」「参照マネージャ」

 当然。


using System.Text.Json;
 の記述が必要になります。

3. Serialize シリアライズ

 「Serialize」で、「JSON」形式にシリアライズします。

using System;
using System.Text.Json;

namespace SerializeBasic
{
	public class WeatherForecast
	{
		public DateTimeOffset Date { get; set; }
		public int TemperatureCelsius { get; set; }
		public string Summary { get; set; }
	}

	public class Program
	{
		public static void Main()
		{
			var weatherForecast = new WeatherForecast
			{
				Date = DateTime.Parse("2019-08-01"),
				TemperatureCelsius = 25,
				Summary = "Hot"
			};

			string jsonString = JsonSerializer.Serialize(weatherForecast);

			Console.WriteLine(jsonString);
		}
	}
}
 てなソースを書いて、ビルド・実行すると、下記の結果が得られます。

{"Date":"2019-08-01T00:00:00+09:00","TemperatureCelsius":25,"Summary":"Hot"}

4. Deserialize デシリアライズ

 「Deserialize」で、シリアライズ化した、「JSON」データを逆変換します。

using System;
using System.Text.Json;

namespace SerializeBasic
{
	public class WeatherForecast
	{
		public DateTimeOffset Date { get; set; }
		public int TemperatureCelsius { get; set; }
		public string Summary { get; set; }
	}

	public class Program
	{
		public static void Main()
		{
			var weatherForecast = new WeatherForecast
			{
				Date = DateTime.Parse("2019-08-01"),
				TemperatureCelsius = 25,
				Summary = "Hot"
			};

			string jsonString = JsonSerializer.Serialize(weatherForecast);
			WeatherForecast data = System.Text.Json.JsonSerializer.Deserialize<WeatherForecast>(jsonString);
		}
	}
}
 てなソースを書いて、ビルド・実行すると、「data」に下記の内容を取得することができます。

Date				{2019/08/01 0:00:00 +09:00}	System.DateTimeOffset
Summary				"Hot"	string
TemperatureCelsius	25	int

5. JsonSerializerOptions シリアライズ書式

 シリアライズする際、デフォルトでは、改行なしで出力されるため、ファイルへ出力した場合など、大変読みにくい状態になります。  「JsonSerializerOptions」という形式のオプションを指定することにより、シリアライズする際の書式を設定することができます。

using System;
using System.Text.Json;

namespace SerializeBasic
{
	public class WeatherForecast
	{
		public DateTimeOffset Date { get; set; }
		public int TemperatureCelsius { get; set; }
		public string Summary { get; set; }
	}

	public class Program
	{
		public static void Main()
		{
			var weatherForecast = new WeatherForecast
			{
				Date = DateTime.Parse("2019-08-01"),
				TemperatureCelsius = 25,
				Summary = "Hot"
			};

			var options = new JsonSerializerOptions { WriteIndented = true };
            string jsonString = JsonSerializer.Serialize(weatherForecast, options);

            Console.WriteLine(jsonString);

			WeatherForecast data = System.Text.Json.JsonSerializer.Deserialize<WeatherForecast>(jsonString, options);
		}
	}
}
 てなソースを書いて、ビルド・実行すると、下記の結果が得られます。

{
  "Date": "2019-08-01T00:00:00+09:00",
  "TemperatureCelsius": 25,
  "Summary": "Hot"
}
 また、出力の下の行で、正常なデータを得ることができます。
AbemaTV 無料体験