2013-06-18 31 views
0

加上引號,我已經得到了這裏有點怪異的一個(好,我認爲這是奇怪!)。在C#字符串

我正在使用一個Web服務來返回一個字符串,我試圖在字符串內引號,所以說例如我想返回字符串克雷格說,「你好」我通常會做這樣的事情:

zString = "Craig says, \"Hello\""; 

但是我實際上從web服務返回的是字符串,包括\'s。所以,其實我得到的結果:

克雷格說,\「你好\」

這是推動我糊塗!任何想法的人?這個聲明在一開始是否會導致問題?

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

謝謝, 克雷格

+1

你確定它不只是在調試器中加入逃逸字符文本顯示器? –

+1

這是由於json格式。雙引號,都是殘酷的角色 –

+0

@MthetheWWatson可能是對的。 –

回答

0

是。作爲在JSON format, it also escapes the " characters by using \ when returned.

這是一樣的:

{ 
    "zString": "Craig says, \"Hello\"" 
} 
+0

@MthetheWWatson有什麼方法可以刪除這些? – SxChoc

+0

這是一個你在哪裏/如何使用響應的問題?你在哪裏看到*克雷格說,「你好」*你說的? – aiapatag

+0

Craig的文字說,「Hello」實際上是返回到調用的HTML頁面,並且由於invaild jSon字符串而出錯。 – SxChoc

0

,一個JSON輸出內部JSON字符串,所以你需要分析它的兩倍。

0

RFC 4627:

所有Unicode字符可放置除字符 引號必須轉義內: 引號,反向固相線,並且所述控制字符(U + 0000 通過U + 001F)。

這只是意味着什麼是錯的。 根據json標準,字符正在被轉義。

+0

那麼我有什麼方法可以去掉這些? – SxChoc

+0

當您將json解析/轉換爲對象時,它們會根據需要自動「剝離」。所以,只需使用任何json解析器/轉換器。如果你的應用程序因'invaild jSon string'錯誤,那麼還有其他的東西是無效的(或者json解析器/轉換器不工作)。你應該**不**在解析/轉換之前手動刪除字符,因爲**然後你會得到一個無效的json字符串**。 – lightbricko