2013-05-20 39 views
0

我使用asp.net網站的API,並返回我的數據是這樣如何忽略Json的數據合約?

return Request.CreateResponse<ResponseResult<ProductSearchDto>>(product.Status.Code, product); 

這回討厭和長期尋找的元素節點,當我用小提琴手,以顯示我的XML(而不是顯示我JSON)。

我現在加入Data ContractsData MembersResponseResult類,ProductSearchDto類固定這一點。

但是,當我想看看如何json看起來,提琴手不再顯示它,並說它不再有效json。我想我的datacontracts搞砸了。

+0

JSON輸出在哪裏? – granadaCoder

回答

0

我猜測,不知怎的,我的datacontracts被搞亂它。

響應內容類型與任何DataContracts或其他任何東西都沒什麼關係。 ASP.NET Web API使用一個名爲content negotiation的概念。這意味着如果客戶端請求JSON並且服務器支持JSON,他會返回JSON。對於XML和其他內容類型也是如此。因此,如果您希望服務器使用JSON,請確保客戶端正在設置Accepts: application/json HTTP請求標頭。

下面是一個有效的請求如何可能看起來像一個例子:

GET /api/values/123 HTTP/1.1 
Host: example.com 
Accept: application/json 
Connection: close 

,並從服務器的響應示例:

HTTP/1.1 200 OK 
Content-Type: application/json 
Content-Length: 13 

{"foo":"bar"} 

而這裏的樣本控制器:

public class ValuesController: ApiController 
{ 
    public HttpResponseMessage Get(string id) 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, new { foo = "bar" }); 
    } 
} 
+0

啊。我覺得我很困惑,因爲我看到了Fiddler中的兩個標籤,並認爲它可以同時顯示兩種格式。現在考慮它並沒有任何意義,因爲它必須做2個服務器請求。 – chobo2