- 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」を参照します。

当然。
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"
}
また、出力の下の行で、正常なデータを得ることができます。
|