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 プロパティ UserId
と DetailLevel
にそれぞれ明示的にマップします。
<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>
) を JsonData
インスタンスに逆シリアル化します。DataObject
考慮事項:
DataContractJsonSerializer
に比べて優れたマッピング機能を提供しますが、やや冗長になる可能性があります。JavaScriptSerializer
DetailLevel
により値のマッピングが容易になります。DataContractResolver
DataContractJsonSerializer
以上がJavaScriptSerializer または DataContractJsonSerializer を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。