2014-03-04 35 views
0

我有需要返回一个JSON响应一个WCF服务:WCF服务可选的数据成员

{ 
"Content": { 
"Id": 817 
"Message":"message" 
}, 
"Status": "Ok" 
} 

这里的消息参数是存在某些情况下,可选的,在一些没有。我试图让它使用以下DataContract工作。但它似乎并不奏效。我在每个响应中都收到包含消息的响应为null。

[DataContract] 
public class CreateNewCandidate_Response 
{ 
    [DataMember(Order=0, IsRequired=true)] 
    public string Status { get; set; } 
    [DataMember(Order = 1, IsRequired = false, EmitDefaultValue = false)] 
    public CreateNewCandidate_Response_Content Content { get; set; } 
    [DataMember(Order = 1, IsRequired = false, EmitDefaultValue = false)] 
    public error Errors { get; set; } 

} 

public class error 
{ 
    [DataMember(Order = 0)] 
    public string Code { get; set; } 
    [DataMember(Order = 1, IsRequired = false, EmitDefaultValue = false)] 
    public string Message { get; set; } 
} 

public class CreateNewCandidate_Response_Content 
{ 
    [DataMember(Order = 0, IsRequired = true, EmitDefaultValue = true)] 
    public int CandidateId { get; set; } 
    [DataMember(Order = 0, IsRequired = false, EmitDefaultValue = false)] 
    public string Message { get; set; } 
} 

我该如何得到它以我想要的格式返回响应?

+2

我不知道,如果它要解决这个问题,同时也装点错误和CreateNewCandidate_Response_Content类使用[DataContract]属性。 –

回答

2

简短的回答是: Bart Beyers是正确的,应用[DataContract]属性。

长雁是从MSDN采取:您创建必须有一个数据合同规定对它们进行序列化

新的复杂类型。默认情况下,DataContractSerializer推断数据协定并序列化所有公开可见的类型。所有公共读/写属性和类型的字段都被序列化。

http://msdn.microsoft.com/en-us/library/ms733127%28v=vs.110%29.aspx