从Asp.net WEBAPI显式返回一个JSON字符串?
在某些情况下,我使用NewtonSoft JSON.NET,而在我的控制器中,我只是从控制器中返回Jobject,并且都很好。
但是我有一种情况,我从另一个服务中获得一些原始JSON,并且需要从我的webAPI中返回它。 在这种情况下,我不能使用NewtonSOFT,但是如果我可以的话,我会从字符串中创建一个JOBJECT(这看起来像是不必要的处理开销),并且返回这个和所有对于这个世界都会很好。
但是,我想简单地返回它,但如果返回字符串,则客户端会收到一个JSON包装器,并将其作为编码字符串的上下文。
我如何从WebAPI控制器方法显式返回JSON?
有几个选择。 最简单的方法是让你的方法返回一个HttpResponseMessage
,并根据你的字符串创建一个StringContent
的响应,类似于下面的代码:
public HttpResponseMessage Get()
{
string yourJson = GetJsonFromSomewhere();
var response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(yourJson, Encoding.UTF8, "application/json");
return response;
}
并检查空或空的JSON字符串
public HttpResponseMessage Get()
{
string yourJson = GetJsonFromSomewhere();
if (!string.IsNullOrEmpty(yourJson))
{
var response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(yourJson, Encoding.UTF8, "application/json");
return response;
}
throw new HttpResponseException(HttpStatusCode.NotFound);
}
如果您特别想仅返回该JSON,而不使用WebAPI功能(如允许XML),则可以始终直接写入输出。 假设你使用ASP.NET进行托管,你可以访问Response
对象,所以你可以把它写成字符串,那么你不需要从你的方法中实际返回任何东西 - 你已经写了输出流的响应文本。