c# - 如何在 ApiController 中为单个方法返回 JSON?

标签 c# asp.net-mvc asp.net-web-api asp.net-web-api2 asp.net-apicontroller

目前,我的 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/

相关文章:

c# - ASP.net MVC4 中 Html.BeginForm 中多个按钮的问题

c# - ASP.NET MVC 当前对 X 的请求不明确

.Net - 使用 HttpClient 发布文件?

c# - 异步 Web API 端点

ASP.NET MVC 条件 ViewModel 抽象

c# - 通过属性应用时如何将多个参数传递给 JsonConverter?

c# - 使用 Javascript 或 C# 验证 Web 表单

c# - Azure 应用程序日志不显示跟踪消息

c# - 关于新特性的开闭原则

c# - 使用 Parallel.For 时出现不可预测的结果