2014-08-28 116 views
0

我正在WCF中編寫一些REST服務。這是我的代碼。WCF JSON格式

[DataContract] 
public class Result 
{ 
    [DataMember] 
    public String ErrorCode { get; set; } 
    [DataMember] 
    public Object Data { get; set; } 
    public Result(String msg, Object data) 
    { 
     this.ErrorCode = msg; 
     this.Data = data; 
    } 
} 

我打電話來此類似這樣的

[OperationContract] 
     [WebInvoke(Method = "POST", 
        UriTemplate = "login", 
        RequestFormat = WebMessageFormat.Json, 
        ResponseFormat = WebMessageFormat.Json, 
        BodyStyle = WebMessageBodyStyle.Wrapped 
        )] 
     Result Login(string emailAddress, string password); 

在我的接口實現類,我寫這篇文章。

public Result Login(string emailAddress, string password) 
     { 

      return new Result("[0000]",null); 
     } 

它給了我這樣的

{"LoginResult":{"Data":null,"ErrorCode":"[0000]"}} 

一個JSON結果奇怪的是它有一個LoginResult在根,我要的是簡單{"Data":null,"ErrorCode":"[0000]"}沒有JSON響應這個LoginResult頭。我怎樣才能解決這個問題? 謝謝。

回答

0

UPDATE

I just noticed that you have two parameters in your method 
1. string emailAddress 
2. string password 

中的對象使用該對象作爲參數添加這兩個參數作爲屬性。 然後應用下面給出的更改。這將爲你工作。

變化你的下面一行: -

BodyStyle = WebMessageBodyStyle.Wrapped 

BodyStyle = WebMessageBodyStyle.Bare 
+0

是的,這就是我想第一。但是當我改變它時,它給了我這個。 「最多隻有一個身體參數可以在沒有包裝元素的情況下被序列化,或者刪除額外的身體參數或者將WebGetAttribute/WebInvokeAttribute的BodyStyle屬性設置爲Wrapped。」足夠的理由,我使用Bare來接聽其他電話,而且看起來沒問題...只是這個登錄... – user454232 2014-08-29 15:10:42