C#で日時をJSONにシリアライズするフォーマット指定を完全解説!初心者向けガイド
生徒
「C#で日時をJSONに変換するとき、変な形式で出力されてしまうことがあります。好きな形に変更する方法はありますか?」
先生
「はい、C#では日時をシリアライズするときにフォーマットを自由に指定できます。設定次第で見やすく、扱いやすい形に整えることができます。」
生徒
「どうやって指定すればいいんですか?難しい設定が必要なんでしょうか?」
先生
「実はとても簡単です。これから、基本的な方法を順番に説明していきます。」
C#で日時をJSONにシリアライズするとどうなる?
C#で日時(DateTime)をJSONに変換するとき、特に設定をしないままだと、標準の形式で出力されます。標準形式では、「UNIX時間」や「ISO 8601形式」など、人間には読みづらい形で表現されることがあります。
例えば、システムの既定形式では次のような出力になり、初めて見ると意味が分かりづらいかもしれません。
2025-12-01T10:30:00.000Z
これは国際標準のISO 8601形式で、「T」は日時の区切り、「Z」は世界標準時(UTC)を表しています。初心者にとっては読み解きにくいため、自由にフォーマットを指定する方法を知ることはとても重要です。
日時フォーマットを指定してJSONにシリアライズする方法
C#では、JSONのシリアライズに使われるライブラリとして主に以下があります。
- System.Text.Json(.NET標準)
- Newtonsoft.Json(広く利用されているライブラリ)
ここでは、実務でもよく使われるNewtonsoft.Jsonを例に日時フォーマットを指定する方法を説明します。
using Newtonsoft.Json;
using System;
public class Sample
{
public DateTime CreatedAt { get; set; }
}
var sample = new Sample
{
CreatedAt = new DateTime(2025, 12, 1, 10, 30, 0)
};
var settings = new JsonSerializerSettings
{
DateFormatString = "yyyy/MM/dd HH:mm:ss"
};
string json = JsonConvert.SerializeObject(sample, settings);
Console.WriteLine(json);
この例では、yyyy/MM/dd HH:mm:ssという形式で出力されます。これは、「西暦4桁/月2桁/日2桁 時:分:秒」の順番で読みやすい形になります。
{"CreatedAt":"2025/12/01 10:30:00"}
System.Text.Jsonでフォーマット指定する方法
最近のC#では、標準のSystem.Text.Jsonもよく使われます。この場合はカスタムコンバータを使う必要があります。
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
public class DateTimeConverter : JsonConverter<DateTime>
{
public override DateTime Read(ref Utf8JsonReader reader, Type type, JsonSerializerOptions options)
=> DateTime.Parse(reader.GetString());
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
=> writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
}
var options = new JsonSerializerOptions
{
Converters = { new DateTimeConverter() }
};
var obj = new { Time = DateTime.Now };
string json = JsonSerializer.Serialize(obj, options);
Console.WriteLine(json);
{"Time":"2025-12-01 10:30:00"}
このように、ライブラリによって設定方法は異なりますが、目的は日時を読みやすく整えることです。
日時フォーマットの主な例一覧
格式は自由に変えられます。よく使われる形式をまとめました。
- yyyy-MM-dd:2025-12-01
- HH:mm:ss:10:30:00
- yyyy-MM-ddTHH:mm:ssZ:ISO 8601形式(国際標準)
- yyyy/MM/dd HH:mm:ss:日本で一般的な形式
目的に応じて使い分けられるようになると、JSONデータの管理が格段に楽になります。