0

我正在使用 asp.net web api 并像这样返回我的数据

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

当我使用 fiddler 向我展示 xml(而不是向我展示 json)时,这会返回令人讨厌且看起来很长的元素节点。

我现在通过将Data Contractsand添加Data Members到我的ResponseResult班级,ProductSearchDto班级来解决这个问题。

但是,当我想查看json外观时,提琴手不再显示它并说它不再有效json

我猜想我datacontracts搞砸了。

4

1 回答 1

0

我猜想我的数据合同以某种方式把它搞砸了。

响应内容类型与任何 DataContracts 或其他内容几乎没有关系。ASP.NET Web API 使用一个称为内容协商的概念。这意味着如果客户端请求 JSON,并且如果服务器支持 JSON,他将返回 JSON。同样适用于 XML 和其他内容类型。因此,如果您希望来自服务器的 JSON,请确保客户端正在设置Accepts: application/jsonHTTP 请求标头。

下面是一个有效请求的示例:

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" });
    }
}
于 2013-05-20T21:10:41.000 回答