我在ApiController
中有一个函数,它应该输出某种对象。该函数以已经序列化的格式接收该对象。为了使函数最终能够恢复有效的JSON,我需要将其转换为JObject
,如下所示:
[HttpGet]
public object MyFunction()
{
string result = .......;
return JObject.Parse(result);
}
问题是:结果是已经一个有效的JSON,我想按原样返回它,而不需要再处理。如果我的课程是常规Controller
,我本可以刚刚返回ContentResult
,但出于某些原因,在这种情况下,我无法将ApiController
变为常规Controller
。
还有其他选择吗?
答案 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;
}