一尘不染

从Asp.net WEBAPI显式返回JSON字符串?

json

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

但是我遇到的情况是,我从另一个服务中获取了一些原始JSON,并且需要从我的webAPI中返回它。在这种情况下,我不能使用NewtonSOft,但是如果可以的话,我将根据字符串创建一个JOBJECT(这似乎是不必要的处理开销),并返回该值,这一切对世界都很好。

但是,我想简单地返回它,但是如果我返回字符串,那么客户端会收到一个JSON包装器,其中我的上下文是编码字符串。

如何从WebAPI控制器方法显式返回JSON?


阅读 202

收藏
2020-07-27

共1个答案

一尘不染

有几种选择。最简单的方法是让您的方法返回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);
}
2020-07-27