【问题标题】:How to return a Json Response如何返回 Json 响应
【发布时间】:2013-08-22 17:47:40
【问题描述】:

我正在尝试在我的 C# restserviceA 中实现一个方法A,它向客户端返回一条 Json 消息。

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

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,但我从 RestServiceA 从 MethodA 获得的响应始终是字符串格式。

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;
}

这里有什么建议吗?谢谢。

【问题讨论】:

  • 您能否扩展您的代码以便我们可以看到 Web 方法签名? JSON 只是来自此服务的字符串,我相信您应该能够将 JSON 作为字符串返回。
  • 感谢 Brainwipe。我在问题中添加了更多代码。如果您还有其他问题,请告诉我。

标签: c# asp.net .net wcf


【解决方案1】:

您的 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();

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2019-06-30
    • 1970-01-01
    • 2018-12-24
    • 2017-03-25
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多