ApiController按原样返回JSON字符串

时间:2014-04-22 18:55:59

标签: asp.net-mvc asp.net-mvc-4

我在ApiController中有一个函数,它应该输出某种对象。该函数以已经序列化的格式接收该对象。为了使函数最终能够恢复有效的JSON,我需要将其转换为JObject,如下所示:

    [HttpGet]
    public object MyFunction()
    {
        string result = .......;
        return JObject.Parse(result);
    }

问题是:结果是已经一个有效的JSON,我想按原样返回它,而不需要再处理。如果我的课程是常规Controller,我本可以刚刚返回ContentResult,但出于某些原因,在这种情况下,我无法将ApiController变为常规Controller

还有其他选择吗?

1 个答案:

答案 0 :(得分:9)

如果操作返回System.Net.Http.HttpResponseMessage,ASP.NET Web API会将返回值直接转换为HTTP响应消息,使用HttpResponseMessage对象的属性来填充响应。

此选项可让您对响应消息进行大量控制。

返回原始json的示例用法: (参考 https://stackoverflow.com/a/17097919/368552

public HttpResponseMessage Get()
{
    string yourJson = GetJsonFromSomewhere();
    var response = Request.CreateResponse(HttpStatusCode.OK);
    response.Content = new StringContent(yourJson, Encoding.UTF8, "application/json");
    return response;
}