2014-03-03 80 views
0

我有一個WCF API,它需要返回這樣的JSON響應:WCF列表數據成員

{ 
     "Status":"ERR", 
     "Errors":[ 
      {"Code":"Err_Auth_NoInfo"} 
      "Message":"There has been an error with the settings of this website. Please   contact us as soon as possible to get your issue resolved" 
     ] 
    } 

我DataContract:

[DataContract] 
public class Response 
{   
    [DataMember(Order = 0, IsRequired = false, EmitDefaultValue = false)] 
    public List<error> Errors { get; set; } 
} 
public class error 
{ 
    [DataMember] 
    public string Code { get; set; } 
    [DataMember] 
    public string Message { get; set; } 
} 

我怎麼也得形成一個類來返回數據在我的方法?我試過了

Response info = new Response(); 
error e = new error(); 
e.Code = "test code"; 
e.Message = "test message"; 
info.Errors = new List<error>(); 

但是這不起作用。

+0

我認爲JSON和XML在REST服務中起作用。但是,您可以在JSON字符串中更改您的響應,然後將其返回。 –

+0

您使用的是什麼綁定? –

回答

1

首先,你Response對象不具有的屬性Status,你應該添加:

[DataContract] 
public class Response 
{ 
    [DataMember(Order = 0)] 
    public string Status { get; set; }   

    [DataMember(Order = 1, IsRequired = false, EmitDefaultValue = false)] 
    public List<Error> Errors { get; set; } 
} 

其次你Error類缺少[DataContract]屬性,你也應該添加:

[DataContract] 
public class Error 
.... 

現在你可以創建你的Response這樣的:

Error e = new Error 
{ 
    Code = "Test code", 
    Message = "Test Message" 
}; 
Response response = new Response 
{ 
    Status = "ERR", 
    Errors = new List<Error> { e } 
}; 
return response; 
0

試試這個:

[DataContract] 
public class Response 
{   
    [DataMember(Order = 0, IsRequired = false, EmitDefaultValue = false)] 
    public List<error> Errors { get; set; } 

    public override string ToString() 
    { 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     return js.Serialize(this); 
    } 
} 

JavaScriptSerializer可在System.Web.Script.Serialization類。

在您的Service實現方法實現中,執行以下操作:將返回類型更改爲string並調用這些行。

//Your code here. 
return myResponse.ToString();