在某些情况下,我具有NewtonSoft JSON.NET,在控制器中,我只是从控制器中返回Jobject,一切都很好。
但是我遇到的情况是,我从另一个服务中获取了一些原始JSON,并且需要从我的webAPI中返回它。在这种情况下,我不能使用NewtonSOft,但是如果可以的话,我将根据字符串创建一个JOBJECT(这似乎是不必要的处理开销),并返回该值,这一切对世界都很好。
但是,我想简单地返回它,但是如果我返回字符串,那么客户端会收到一个JSON包装器,其中我的上下文是编码字符串。
如何从WebAPI控制器方法显式返回JSON?
有几种选择。最简单的方法是让您的方法返回HttpResponseMessage,并StringContent根据您的字符串使用来创建该响应,类似于下面的代码:
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; }
并检查null或空的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); }