如何返回Json响应

本文关键字:Json 响应 返回 何返回 | 更新日期: 2023-09-27 18:28:18

我正试图在我的C#restserviceA中实现一个方法a,该方法向客户端返回Json消息。

该方法只是对内部托管的服务进行另一个restservice调用,如下面的Say RestserviceB

HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
req.Method = "GET";
resp = req.GetResponse() as HttpWebResponse;
resp = req.GetResponse() as HttpWebResponse;
            Encoding enc = Encoding.UTF8;
            loResponseStream = new StreamReader(resp.GetResponseStream(), enc);
            string strResponse = loResponseStream.ReadToEnd();
            return resp;

此方法将从RestServiceB获得json格式的响应。我怎么能以json格式本身向客户端返回相同的json字符串呢。

我试着把下面的webmethod属性放在我的methodA中,但我从methodA从RestServiceA得到的响应总是字符串格式。

SVC接口:

[OperationContract ]
[WebGet(UriTemplate = "getresults", ResponseFormat = WebMessageFormat.Json)]
String GetResults();

SVC代码

public String GetResults()
{
   string str=//Call RestServiceB which returns response as below.
   "query":"myquery", "results": [ {"name":"result1", "type":"suggest"}, {"name":"result2", "type":"type2"}]" 
    return str;
}

这里有什么建议吗?非常感谢。

如何返回Json响应

您的JSON字符串正被包装在另一个JSON字符串中。

返回原始JSON字符串的一种方法是将GetResults()的输出类型更改为Stream,而不是字符串。

    public System.IO.Stream GetResults()
    {
       string str=//Call RestServiceB which returns response as below.
       "query":"myquery", "results": [ {"name":"result1", "type":"suggest"}, {"name":"result2", "type":"type2"}]"         
        WebOperationContext.Current.OutgoingResponse.ContentType =
        "application/json; charset=utf-8";
        return new MemoryStream(Encoding.UTF8.GetBytes(str));
    }
    [OperationContract ]
    [WebGet(UriTemplate = "getresults")]
    String GetResults();