如何从ASP.NETWEBAPI显式返回JSON字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (90)

在某些情况下,我使用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对象,所以你可以把它写成字符串,然后你不需要从你的方法中返回任何东西 - 你已经写了响应文本到输出流。

扫码关注云+社区

领取腾讯云代金券