从Asp.net WEBAPI显式返回一个JSONstring?

在某些情况下,我有NewtonSoft JSON.NET,在我的控制器中,我只是从我的控制器返回Jobject,一切都很好。

但我有一个情况,我从另一个服务得到一些原始的JSON,并需要从我的webAPI返回它。 在这种情况下,我不能使用NewtonSOFT,但是如果我能的话,我会创build一个JOBJECT从string(这似乎是不必要的处理开销),并返回这一切,将与世界。

不过,我想简单地返回这个,但是如果我返回string,那么客户端会收到一个JSON包装器,并将其作为编码string的上下文。

我如何显式地从我的WebAPI控制器方法返回一个JSON?

有几个select。 最简单的方法是让你的方法返回一个HttpResponseMessage ,并根据你的string创build一个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; } 

并检查空或空的JSONstring

 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,而不使用WebAPIfunction(如允许XML),则可以始终直接写入输出。 假设你使用ASP.NET来托pipe,你可以访问Response对象,所以你可以把它写成string,那么你不需要从你的方法中返回任何东西 – 你已经写了输出stream的响应文本。