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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-10 09:15:42642ブラウズ

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]

例:

<code class="language-csharp">[DataContract]
public class DataObject
{
    [DataMember(Name = "user_id")]
    public int UserId { get; set; }

    [DataMember(Name = "detail_level")]
    public string DetailLevel { get; set; }
}</code>
この例では、

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

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

<code class="language-csharp">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;</code>

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

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

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