2013-01-09 100 views
1

我知道這已經被大量的時間覆蓋,但我仍然有一個問題,所有的解決方案。轉義字符串中的雙引號在c#

我需要構建一個字符串發送到需要引號的JSON解析器。我已經試過這些形式:

string t1 = "[{\"TS\"}]"; 
string t2 = "[{" + "\"" + "TS" + "\"" + "}]"; 
string t3 = @"[{""TS""}]"; 
Debug.Print(t1); 
Debug.Print(t1); 
Debug.Print(t1); 

調試語句中正確顯示它[{「TS」}],但是當我看它在調試器中,最重要的,當我的字符串發送到我的服務器端JSON解析器是否有轉義字符: 「[{\」TS \「}]」

如何擺脫實際字符串中的轉義字符?

+0

你的代碼示例是否錯誤?你的'Debug.Print'語句全部使用t1。 –

+1

順便說一句,這是無效的JSON。 – SLaks

+0

您確定您的JSON解析器中沒有錯誤嗎?在所有三種情況下你的代碼看起來都很好 – Mir

回答

3

調試語句中正確顯示它[{「TS」}],但是當我在調試器看它 ,最重要的,當我的字符串發送到我的 服務器端JSON解析器是在轉義字符它: 「[{\」 TS \「}]」

但從調試角度,它會永遠顯示轉義版本(這是使你作爲開發人員,知道該字符串值是什麼)。這不是一個錯誤。當你將它發送給另一個.Net系統時,它將從調試器的角度再次顯示轉義版本。如果你輸出這個值(Response.Write()或Console.WriteLine()),你會看到你期望的版本會在那裏。

如果突出顯示變量(從調試器中)並選擇放大鏡圖標旁邊的下拉列表並選擇「Text Visualizer」,您將看到它如何以純文本形式顯示。這可能是你正在尋找的。

根據你的意見,我想建議你也看看你如何將字符串轉換爲字節。你想確保你的字節編碼格式可以被其他機器理解。請確保您使用的命令如下轉換您的字符串轉換成字節:

System.Text.Encoding.ASCII.GetBytes(mystring); 

我有偷渡懷疑您要發送的字符串本身,而不是編碼版本的比特表示。

+0

問題是在服務器端(Linux)接收到帶有轉義字符的字符串並且不理解它 – scoleman2272

+0

然後,要麼是您沒有正確檢查服務器端的字符串,要麼是您的問題在於字符串被髮送(沒有顯示),因爲這裏的代碼很好。 – Servy

+0

然後我們需要更多的細節。我們需要知道linux機器如何使用您的數據。你迄今向我們展示的內容並不正確。 –

相關問題