我有一个课程如下。
[Datacontract]
public class Customer
{
[DataMember(Name="p1")]
public string Name { get; set; }
[DataMember(Name = "p2")]
public string SurName { get; set; }
}
案例1 :
JSON:{ “名称”: “约翰”, “姓”: “ASDF”}
反序列化对象: customer.Name => null和customer.SurName =>空
案例2
Json:{“p1”:“John”,“p2”:“Asdf”}
反序列化对象: customer.Name => John和customer.SurName => ASDF
问题:
我在Case1 =>中有json { “名称”: “约翰”, “姓”: “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
答案 0 :(得分:0)
以这种方式定义类属性:
[JsonProperty(Required = Newtonsoft.Json.Required.AllowNull)]
public string Name { get; set;}
答案 1 :(得分:0)
你能用下面的反序列化吗? :
var customerModelData = JsonConvert.DeserializeObject<Customer>(jsonCustomerData);