2014-08-28 76 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