从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的响应文本。