ホームページ >バックエンド開発 >C++ >グローバル設定に影響を与えずに Json.Net の日付シリアル化形式をカスタマイズするにはどうすればよいですか?

グローバル設定に影響を与えずに Json.Net の日付シリアル化形式をカスタマイズするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-15 22:38:44870ブラウズ

How to Customize Date Serialization Format in Json.Net without Affecting Global Settings?

Json.Net 日付シリアル化形式のカスタマイズ

一部の API 開発シナリオでは、グローバル設定に影響を与えずに、特定のデータの日付シリアル化形式をカスタマイズする必要がある場合があります。効率的な方法の 1 つは、カスタム JsonConverter を使用することです。

あなたが提案したように、これは、JsonConverter 基本クラスを継承するカスタム クラスを作成することで実現できます。以下に例を示します:

<code class="language-csharp">public class CustomDateTimeConverter : JsonConverter
{
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var date = (DateTime)value;
        writer.WriteValue(date.ToString("yyyy'-'MM'-'dd"));
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException(); // 此示例中未实现
    }

    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(DateTime);
    }
}</code>

このカスタム コンバーターは、指定された日付形式を必要とするプロパティに適用できます:

<code class="language-csharp">public class ReturnObjectA
{
    [JsonConverter(typeof(CustomDateTimeConverter))]
    public DateTime ReturnDate { get; set; }
}</code>

ただし、Json.Net では、組み込みの IsoDateTimeConverter を使用する、より簡単なソリューションも提供しています。このコンバータを使用すると、コンストラクターで日付形式を指定できます:

<code class="language-csharp">public class CustomDateTimeConverter : IsoDateTimeConverter
{
    public CustomDateTimeConverter()
    {
        DateTimeFormat = "yyyy'-'MM'-'dd";
    }
}</code>

IsoDateTimeConverter をサブクラス化し、希望の形式でカスタム コンバーター プロパティを適用することで、グローバル設定を変更せずに日付のシリアル化をカスタマイズできます。

以上がグローバル設定に影響を与えずに Json.Net の日付シリアル化形式をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。