从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对象,所以你可以把它写成字符串,那么你不需要从你的方法中实际返回任何东西 - 你已经写了输出流的响应文本。

链接地址: http://www.djcxy.com/p/20423.html

上一篇: Return a JSON string explicitly from Asp.net WEBAPI?

下一篇: Put content in HttpResponseMessage object?