Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
ASP.NET REST服务在JSON结果中不带转义字符_Asp.net_Json_Rest_Escaping - Fatal编程技术网

ASP.NET REST服务在JSON结果中不带转义字符

ASP.NET REST服务在JSON结果中不带转义字符,asp.net,json,rest,escaping,Asp.net,Json,Rest,Escaping,我打电话给一家REST服务公司SearchFavorite,这家公司反过来又打电话给另一家服务公司a。 服务A已经返回JSON。但由于我的返回类型为searchFavoriteCompany,因此我的搜索结果将返回转义字符: "{\"responseHeader\":{\"status\":0,\"QTime\":2,\"params\":{\"facet\":\"false\",\"fl\":\"id,title,friendlyurl,avatar,locpath,objectid,obje

我打电话给一家REST服务公司SearchFavorite,这家公司反过来又打电话给另一家服务公司a。 服务A已经返回JSON。但由于我的返回类型为searchFavoriteCompany,因此我的搜索结果将返回转义字符:

"{\"responseHeader\":{\"status\":0,\"QTime\":2,\"params\":{\"facet\":\"false\",\"fl\":\"id,title,friendlyurl,avatar,locpath,objectid,objecttype\",\"indent\":\"off\",\"start\":\"0\",\"q\":\"title_search:*castle*\",\"wt\":\"json\",\"fq\":\"userid:\\\"C325D42C-A777-4275-BDD2-D7810A8AB9AB\\\"\",\"rows\":\"10\",\"defType\":\"lucene\"}},\"response\":{\"numFound\":2,\"start\":0,\"docs\":[{\"title\":\"Castle A\",\"objecttype\":1,\"friendlyurl\":\"castle-a\",\"avatar\":\"6_887_castle-a.JPG\",\"objectid\":6},{\"title\":\"Castle B\",\"objecttype\":1,\"friendlyurl\":\"castle-b\",\"avatar\":\"794_360_13j-Castle-by-night.jpg\",\"objectid\":794}]}}\u000a"
我不知道如何确保返回的JSON结果中没有这些转义字符

Imyservice.vb

Namespace RestService

<ServiceContract()>
Public Interface Imyservice

    <OperationContract()> _
Namespace RestService

Public Class iservice
    Implements Imyservice
    Public Function searchFavoriteCompany(ByVal q As String, ByVal uuid As String) As String Implements Imyservice.searchFavoriteCompany
        Dim req As HttpWebRequest = HttpWebRequest.Create("http://localhost/getjson")  <---- this service already returns JSON data
        Dim Resp As HttpWebResponse = req.GetResponse()
        Dim reader As StreamReader = New StreamReader(Resp.GetResponseStream)
        Dim responseString As String = reader.ReadToEnd()

        Return responseString

    End Function

End Class

End Namespace   
iservice.svc.vb

Namespace RestService

<ServiceContract()>
Public Interface Imyservice

    <OperationContract()> _
Namespace RestService

Public Class iservice
    Implements Imyservice
    Public Function searchFavoriteCompany(ByVal q As String, ByVal uuid As String) As String Implements Imyservice.searchFavoriteCompany
        Dim req As HttpWebRequest = HttpWebRequest.Create("http://localhost/getjson")  <---- this service already returns JSON data
        Dim Resp As HttpWebResponse = req.GetResponse()
        Dim reader As StreamReader = New StreamReader(Resp.GetResponseStream)
        Dim responseString As String = reader.ReadToEnd()

        Return responseString

    End Function

End Class

End Namespace   
但是我得到了错误“对象引用未设置为对象的实例”
我检查了:responsestring包含一个值,所以这不是问题所在。

如果不能将输出直接传递给响应,那么最好返回传统方法,并从方法返回类型安全的对象。您已经获得了原始服务传递给您的JSON,您的最终目标是将该对象返回给调用者

假设您的示例中有一个完整的JSON对象,您可以首先转到获取JSON并从中创建类。它使用C#,但您可以使用类似的方法轻松地将其转换为VB

如果您按照这些步骤操作,您将得到几个类,包括一个名为
RootObject
,其中包含
responseHeader
response
的属性,以及所需的其他类。您可以根据需要重命名这些类,并将它们放入适当的名称空间中——只需保留属性名,使它们与JSON匹配即可


一旦您获得了这个
RootObject
类(或者您将其重命名为什么),您就可以将从原始服务获得的JSON反序列化为
RootObject
类型的对象,然后您的WebAPI方法将只返回一个
RootObject
。与任何其他WCF调用一样,框架将负责为调用方将该对象序列化回JSON(或XML)。

看看这是否有帮助。如果服务已经返回JSON数据,那么上面的一切(无论如何)是为了什么?除了返回一个字符串(可能现在使用字符串内容类型而不是application/json)之外,没有看到你在做什么?@JoeEnos:我用你在其他帖子中的建议更新了我的帖子,但它仍然不起作用EdSF:你是对的,但我的其他服务是本地的,不能通过REST直接访问。我将如何按照您的建议更改内容类型?这是托管在IIS中还是像在Windows服务中一样自托管?如果它是自托管的,那么HttpContext.Current上的
NullReferenceException
就有意义了。我如何检查它?:$如果它是自托管的,我将如何修复它?