我使用 DataContractJsonSerializer 在 Silverlight 4 中反序列化 json 数据。Json 数据键名与我的类属性名不匹配;所以我想我必须使用 DataMemberAttribute。所以我做了以下事情:
[DataContract]
public class Person : Model
{
[DataMember(Name = "id")]
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
[DataMember(Name = "name")]
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
现在反序列化失败了,因为我没有将 DataContractAttribute 应用于 Person 的基类 Model。要求很严格吗?此外,在我将 DataContractAttribute 应用于 Model 之后,反序列化再次失败,因为我将 DataMember 属性应用于私有字段,而不是公共属性。为什么我不能将它们应用于私人成员(文档似乎另有说明)。
注意:服务器端代码不是 ASP.NET;所以不使用WCF。