目前,我的 ApiController
正在返回 XML 作为响应,但对于单个方法,我想返回 JSON。即我无法进行全局更改以强制将响应作为 JSON。
public class CarController : ApiController
{
[System.Web.Mvc.Route("api/Player/videos")]
public HttpResponseMessage GetVideoMappings()
{
var model = new MyCarModel();
return model;
}
}
我尝试这样做,但似乎无法将我的模型正确转换为 JSON 字符串:
var jsonString = Json(model).ToString();
var response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
return response;
最佳答案
如果您无法进行全局更改以强制将响应作为 JSON, 然后尝试:
[Route("api/Player/videos")]
public HttpResponseMessage GetVideoMappings()
{
var model = new MyCarModel();
return Request.CreateResponse(HttpStatusCode.OK,model,Configuration.Formatters.JsonFormatter);
}
或
[Route("api/Player/videos")]
public IHttpActionResult GetVideoMappings()
{
var model = new MyCarModel();
return Json(model);
}
如果你想全局更改,那么首先转到 YourProject/App_Start/WebApiConfig.cs
并添加:
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(
config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml"));
在 Register
方法的底部。
然后尝试:
[Route("api/Player/videos")]
public IHttpActionResult GetVideoMappings()
{
var model = new MyCarModel();
return Ok(model);
}
关于c# - 如何在 ApiController 中为单个方法返回 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49073658/