我正在使用asp.net web api并返回我的数据
return Request.CreateResponse<ResponseResult<ProductSearchDto>>(product.Status.Code, product);
当我使用fiddler向我展示xml(而不是向我显示json)时,这会返回令人讨厌且看起来很长的元素节点。
我现在通过将Data Contracts
和Data Members
添加到我的ResponseResult
班级ProductSearchDto
班级来解决此问题。
但是,当我想看看json
看起来如何时,fiddler不再显示它,并说它不再有效json
。
我猜我的datacontracts
不知何故搞砸了。
答案 0 :(得分: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" });
}
}