ホームページ >バックエンド開発 >C++ >JavaScriptSerializer または DataContractJsonSerializer を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法

JavaScriptSerializer または DataContractJsonSerializer を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法

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

How to Map JSON Field Names to .NET Object Properties Using JavaScriptSerializer or DataContractJsonSerializer?

JSON フィールド名を .NET オブジェクト プロパティにマッピングする

JSON データを .NET オブジェクトに解析するには、多くの場合、JSON フィールド名を対応するオブジェクト プロパティにマッピングする必要があります。 これは、JSON フィールド名が .NET プロパティ名と異なる場合に重要になります。 JavaScriptSerializer.Deserialize は便利そうに見えますが、名前の不一致を常に確実に処理できるわけではありません。 より堅牢なソリューションでは、DataContractJsonSerializer.

を利用します。

信頼性の高いマッピングのための DataContractJsonSerializer の使用

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>

このコードは DataObject クラスを定義します。 DataMember 属性は、JSON フィールド「user_id」と「detail_level」を .NET プロパティ UserIdDetailLevel にそれぞれ明示的にマップします。

逆シリアル化は次のように簡単になります。

<code class="language-csharp">DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData));
DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>
このコード スニペットは、JSON データ (

) を JsonData インスタンスに逆シリアル化します。DataObject

考慮事項:

  • DataContractJsonSerializer に比べて優れたマッピング機能を提供しますが、やや冗長になる可能性があります。JavaScriptSerializer
  • 列挙型として定義された
  • プロパティの場合、カスタム DetailLevel により値のマッピングが容易になります。DataContractResolver
  • は Silverlight とも互換性があります。DataContractJsonSerializer

以上がJavaScriptSerializer または DataContractJsonSerializer を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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