Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何返回Json响应_C#_Asp.net_.net_Wcf - Fatal编程技术网

C# 如何返回Json响应

C# 如何返回Json响应,c#,asp.net,.net,wcf,C#,Asp.net,.net,Wcf,我试图在我的C#restserviceA中实现一个methodA,它向客户端返回一条Json消息 该方法只需对内部托管的服务进行另一个restservice调用,如下面的RESTServiceB HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; req.Method = "GET"; resp = req.GetResponse() as HttpWebResponse; resp = req.GetResponse()

我试图在我的C#restserviceA中实现一个methodA,它向客户端返回一条Json消息

该方法只需对内部托管的服务进行另一个restservice调用,如下面的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字符串的一种方法是将GetResults()的输出类型更改为Stream而不是string

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

你能扩展你的代码让我们看到Web方法签名吗?JSON只是这个服务的一个字符串,我相信您应该能够以字符串的形式返回JSON。谢谢Brainwipe。我在问题中添加了一些代码。如果您还有其他问题,请告诉我。