ホームページ >バックエンド開発 >C++ >JSON.Net プロパティをオブジェクトではなく値としてシリアル化/逆シリアル化するにはどうすればよいですか?

JSON.Net プロパティをオブジェクトではなく値としてシリアル化/逆シリアル化するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-30 12:57:10630ブラウズ

How Can I Serialize/Deserialize JSON.Net Properties as Values Instead of Objects?

Json.Net: オブジェクトではなく値としてプロパティを処理する

JSON.Net を使用して車や車などの複雑なオブジェクトを表す場合はじめに説明した StringId クラスでは、プロパティをネストされたオブジェクトではなくプレーンな値としてシリアル化/逆シリアル化することが望ましい場合があります。この記事では、これを実現するための 2 つのアプローチ、型コンバーターと JSON コンバーターを説明します。

型コンバーター

StringId クラス専用の型コンバーターを追加すると、JSON.Net で次のことが可能になります。途中で文字列との間で変換します。シリアル化/逆シリアル化:

[TypeConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : TypeConverter
{
    // ... (Implement CanConvertFrom, CanConvertTo, ConvertFrom, and ConvertTo)
}

JSON コンバーター

代わりに、JSON コンバーターを使用すると、変換プロセスをより詳細に制御できます。カスタム JSON コンバーターを StringId クラスに適用することで、シリアル化および逆シリアル化ロジックを明示的に定義できます。

[JsonConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : JsonConverter
{
    // ... (Implement CanConvert, ReadJson, and WriteJson)
}

グローバル コンバーター構成

JSON コンバーターも次のように定義できます。グローバルに設定されます。たとえば、StringId 型のすべてのプロパティを値として処理するには:

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    Converters = { new StringIdConverter() }
};

追加の考慮事項

  • .Net Core では、型コンバーターのサポートには JSON が必要です。 Net 10.0.1 以降。
  • JSON.Net のポータブル ビルドでは、型コンバーターがサポートされていますバージョン 10.0.3 では使用できません。
  • 文字列表現で数値データまたは日付/時刻データを操作する場合は、提供されたカルチャを使用してカルチャ間での移植性を確保することが重要です。

以上がJSON.Net プロパティをオブジェクトではなく値としてシリアル化/逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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