【发布时间】:2017-07-11 08:42:19
【问题描述】:
我有一堂课如下。
[Datacontract]
public class Customer
{
[DataMember(Name="p1")]
public string Name { get; set; }
[DataMember(Name = "p2")]
public string SurName { get; set; }
}
案例 1:
json:{"Name":"John","SurName":"Asdf"}
反序列化对象: customer.Name => null 和 customer.SurName => null
案例 2
Json: {"p1":"John","p2":"Asdf"}
反序列化对象: customer.Name => John 和 customer.SurName=> Asdf
问题:
我有 Case1 中的 json => {"Name":"John","SurName":"Asdf"}
我在 Case2 中等待反序列化的对象 =>
customer.Name => John 和 customer.SurName=> Asdf
那么,我如何在反序列化期间提供忽略 DataMember(Name) 属性的功能?
已解决:
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
property.PropertyName = member.Name;
return property;
}
谢谢@dbc
【问题讨论】:
-
看起来像 Configure JSON.NET to ignore DataContract/DataMember attributes 的副本。这是否充分回答了您的问题?
-
不完全是。我尝试忽略 DataMember 属性的 Name 字段。 [DataMember(Name="p1")] 在这里,Name="p1" 是反序列化错误。
-
所以你想尊重
[DataContract]和[DataMember]属性除了你想忽略DataMember.Name值? (哦,对了,你的Customer类型也必须标上[DataContract];你能确认一下吗?) -
是的。因为我没有机会更改客户类别。因此我无法将 JsonObject 属性添加到 CustomerClass 属性。
-
完全忽略数据合约属性,如图here 不够好?例如类
Customer应该足够了。你有一个例子表明这还不够好吗?
标签: asp.net-mvc asp.net-web-api json.net asp.net-web-api2 json-deserialization