将 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>
此代码片段将 JSON 数据 (JsonData
) 反序列化为 DataObject
实例。
注意事项:
DataContractJsonSerializer
与 JavaScriptSerializer
相比提供了更出色的映射功能,但它可能稍微冗长一些。DetailLevel
属性,自定义 DataContractResolver
可以促进值映射。DataContractJsonSerializer
也与 Silverlight 兼容。以上是如何使用 JavaScriptSerializer 或 DataContractJsonSerializer 将 JSON 字段名称映射到 .NET 对象属性?的详细内容。更多信息请关注PHP中文网其他相关文章!