我該如何執行此操作?用雙引號取代雙引號
當前字符串:
string json = @"[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]";
目標:
string json = @"[{""data"":{""JobID"":""1"",,""Amount"":""6500"",""Description"":""a""}}]";
我該如何執行此操作?用雙引號取代雙引號
當前字符串:
string json = @"[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]";
目標:
string json = @"[{""data"":{""JobID"":""1"",,""Amount"":""6500"",""Description"":""a""}}]";
只是一味Replace("\"", "\"\"")
string json = "[{\"data\":{\"JobID\":\"1\",,\"Amount\":\"6500\",\"Description\":\"a\"}}]";
string result = json.Replace("\"", "\"\"");
結果:
這個問題可能不是用''''替換' - 在第二次閱讀時,它看起來像一個問題是C#逐字字符串文字的實際... – 2013-04-26 09:02:17
@MarcGravell也許。無論如何,我試圖提供一個答案,其中適合輸入和輸出在Q. – 2013-04-26 09:04:26
@Hossein輸入是無效的開始... – 2013-04-26 09:06:49
C#中的@"..."
語法是逐字字符串文字;這意味着編譯器不會像\n
,\"
等那樣使用轉義,而是直接處理所有字符,"
必須由""
表示。正因爲如此,下面一行是無效的C#:
string json = @"[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]";
這違反了C#逐字字符串的轉義規則。正確的C#是你已經擁有:
string json = @"[{""data"":{""JobID"":""1"",,""Amount"":""6500"",""Description"":""a""}}]";
由於第一行是不以任何方式有效,是沒有意義的請教如何在它們之間進行轉換,只是說:寫有效的C#。
然而,第二串仍然表示JSON數據:
[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]
在C#的""
不存在;他們只是逃避 - 你需要閱讀它們作爲"
。
其實,問題來自http://stackoverflow.com/questions/16216701/json-deserialization-issue-with-xamarin-android/16216840#comment23218559_16216840我想你可以看到我刪除的答案,並可以解釋它給OP 。我不能 – I4V 2013-04-26 09:07:08
看一看:http://stackoverflow.com/questions/5189269/string-replace-single-quote-to-double-quote-in-c-sharp?rq=1 – duDE 2013-04-26 08:59:11
你能澄清一下嗎?第一個「字符串」根本就是無效的C#......第二個是......而「how」就是你已經完成的工作:寫有效的C# – 2013-04-26 09:01:19
我認爲我們都低估了複雜性這個問題。我有Martin Fowler的電子郵件地址,我希望他會立即加入該線程。 – 2013-04-26 09:01:34