2013-04-26 178 views
-3

我该如何执行此操作?用双引号取代双引号

当前字符串:

string json = @"[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]"; 

目标:

string json = @"[{""data"":{""JobID"":""1"",,""Amount"":""6500"",""Description"":""a""}}]"; 
+0

看一看:http://stackoverflow.com/questions/5189269/string-replace-single-quote-to-double-quote-in-c-sharp?rq=1 – duDE 2013-04-26 08:59:11

+3

你能澄清一下吗?第一个“字符串”根本就是无效的C#......第二个是......而“how”就是你已经完成的工作:写有效的C# – 2013-04-26 09:01:19

+0

我认为我们都低估了复杂性这个问题。我有Martin Fowler的电子邮件地址,我希望他会立即加入该线程。 – 2013-04-26 09:01:34

回答

2

只是一味Replace("\"", "\"\"")

string json = "[{\"data\":{\"JobID\":\"1\",,\"Amount\":\"6500\",\"Description\":\"a\"}}]"; 

string result = json.Replace("\"", "\"\""); 

结果:

enter image description here

+0

这个问题可能不是用''''替换' - 在第二次阅读时,它看起来像一个问题是C#逐字字符串文字的实际... – 2013-04-26 09:02:17

+0

@MarcGravell也许。无论如何,我试图提供一个答案,其中适合输入和输出在Q. – 2013-04-26 09:04:26

+0

@Hossein输入是无效的开始... – 2013-04-26 09:06:49

2

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#""不存在;他们只是逃避 - 你需要阅读它们作为"

+0

其实,问题来自http://stackoverflow.com/questions/16216701/json-deserialization-issue-with-xamarin-android/16216840#comment23218559_16216840我想你可以看到我删除的答案,并可以解释它给OP 。我不能 – I4V 2013-04-26 09:07:08