WCF和ResponseFormat =具有继承类的WebMessageFormat.Json

时间:2013-05-15 16:32:31

标签: json wcf serialization

我遇到了另一个明显涉及继承类的问题:

我有这个超级班。

public class Person 
{
    public string Firstname { get; set; }
    public string Lastname { get; set; }
    public string Email { get; set; }
}

然后是一个子类:

public class Member : Person
{
    public int MembershipId  { get; set; }
    public string Password { get; set; }
    public List<Foo> Foos { get; set; }
}

当我使用以下代码返回会员时,我没有任何用处:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public Member GetMember()
{
    return new Member 
    { 
         Firstname = "Jane", 
         Lastname = "Doe", 
         Email = "jane.doe@doe.com",
         MembershipId = 10,
         Password = "*****",
         Foos = new List<Foo> { };  
    };
}

未继承的类/对象被序列化并以json格式返回,没有任何问题。

有没有让我的会员对象正确返回,好吗?我一直在搞乱这个问题,我的结论是它必须与继承的类和json有关。

3 个答案:

答案 0 :(得分:0)

尝试此修复

[DataContract]
public class Person 
{
    [DataMember]
    public string Firstname { get; set; }
    [DataMember]
    public string Lastname { get; set; }
    [DataMember]
    public string Email { get; set; }
}
[DataContract]
public class Member : Person
{
    [DataMember]
    public string MembershipId  { get; set; }
    [DataMember]
    public string Password { get; set; }
    [DataMember]
    public List<Foo> Foos { get; set; }
}

答案 1 :(得分:0)

实际上我关于继承类和JSON序列化的理论存在缺陷。 它工作,我不需要[Datacontrac]和[Datamember]装饰器。还有别的错。也许我的结构太深,太长。 我想知道JSON是否对尺寸有一些限制。

答案 2 :(得分:0)

我结束了使用Newtonsoft的JSON.net。我建议使用它,而不是浪费时间在.net上的原生json功能。

http://json.codeplex.com/