0

我使用 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。

4

1 回答 1

1

为了让私有成员正确地通过 WCF 序列化,我们必须将它们全部更改为protected internal而不是private. 也许同样适用DataContractJsonSerializer

于 2011-11-19T02:30:35.903 回答