【发布时间】:2013-09-12 22:52:50
【问题描述】:
我正在调用一个 REST 服务 searchFavoriteCompany,该服务又调用另一个服务 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()> _
_ 函数 searchFavoriteCompany(ByVal q As String, ByVal uuid As String) As String
End Interface
End Namespace
iservice.svc.vb
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
我也尝试过返回响应字符串,而不是返回:
HttpContext.Current.Response.Write(responseString)
return ""
然后我收到错误“对象引用未设置为对象的实例” 我检查了:responsestring 包含一个值,所以这不是问题。
【问题讨论】:
-
看看this question 看看是否有帮助。
-
如果服务已经返回 JSON 数据,以上所有内容(无论如何)是什么?除了返回一个字符串(大概现在使用字符串内容类型而不是应用程序/json)之外,真的没有看到你在做什么?
-
@JoeEnos:我根据您在其他帖子中的建议更新了我的帖子,但它仍然不起作用 EdSF:您是对的,但我的其他服务是本地服务,不能通过 REST 直接访问。我将如何按照您的建议更改内容类型?
-
这是托管在 IIS 中还是自托管,例如在 Windows 服务中?如果它是自托管的,那么 HttpContext.Current 上的
NullReferenceException是有意义的。 -
如何检查? :$ 如果它是自托管的,我将如何解决它?
标签: asp.net json rest escaping