ホームページ > バックエンド開発 > C++ > 逆シリアル化中に、異なる名前の JSON フィールドを C# プロパティにマッピングするにはどうすればよいですか?

逆シリアル化中に、異なる名前の JSON フィールドを C# プロパティにマッピングするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-10 09:15:42
オリジナル
650 人が閲覧しました

How Can I Map Differently Named JSON Fields to C# Properties During Deserialization?

C# で JavaScriptSerializer.Deserialize を使用してフィールド名を変更します

C# の

クラスは、JSON データを C# オブジェクトに逆シリアル化する便利な方法を提供します。ただし、デフォルトでは、JSON フィールド名がターゲット オブジェクトのプロパティ名に直接マッピングされます。これにより、JSON フィールド名が C# オブジェクトのプロパティ名と一致しない場合、逆シリアル化が失敗する可能性があります。 JavaScriptSerializer

この問題を解決するには、2 つの一般的な方法があります:

1. 属性 XmlElement を使用します。

この方法では、

属性を使用してフィールド名のマッピングを手動で設定します。ただし、元の投稿で述べたように、この方法は [XmlElement] では機能しません。 フィールド名のマッピングは、代わりに JavaScriptSerializer 属性を使用して実装する必要があります。 [DataMember]

2. DataContractJsonSerializer を使用します。

名前空間で提供される System.Runtime.Serialization クラスは、フィールド名マッピングのためのより強力なソリューションを提供します。対応する JSON フィールド名は、C# オブジェクトのプロパティに DataContractJsonSerializer 属性を適用することで明示的に指定できます。 [DataMember]

例:

[DataContract]
public class DataObject
{
    [DataMember(Name = "user_id")]
    public int UserId { get; set; }

    [DataMember(Name = "detail_level")]
    public string DetailLevel { get; set; }
}
ログイン後にコピー
この例では、

user_id の JSON フィールド名は、C# オブジェクトの detail_level プロパティと UserId プロパティにそれぞれマップされます。 DetailLevel

を使用して JSON データを逆シリアル化するには: DataContractJsonSerializer

using System.Runtime.Serialization.Json;
using System.Text;
using System.IO;

...

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData));
DataObject dataObject = serializer.ReadObject(ms) as DataObject;
ログイン後にコピー

属性と DataContractJsonSerializer 属性を使用すると、JSON デシリアル化中にフィールド名を効果的に変更でき、JSON データと C# オブジェクト間の正しいマッピングが保証されます。 [DataMember]

以上が逆シリアル化中に、異なる名前の JSON フィールドを C# プロパティにマッピングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート