c#处理字符串中的单双引号(json)

时间:2015-06-04 08:00:22

标签: c# json double-quotes

我使用c#来处理JSON格式来解析一些数据,我遇到过这种JSON的情况:

"{"imperial":" 54 1/4" "}"

正如你可以看到

后面有一个英寸符号(双引号)
1/4

导致我出错。 我怎么能处理这个双引号?

我使用Newtonsoft.JSON来解析JSON,我尝试了很多方法,例如替换"到'这给了我同样的错误。

我想过正则表达式可能吗?有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

代码(对于像<NUMBER>/<NUMBER><DOUBLE QUOTE>这样的字符串):

string json = "{\"imperial\":\" 54 1/4\" \"}";
string convertedJson = Regex.Replace(json, @"(\d+\/\d+)""", "$1\\\"");

var res = Newtonsoft.Json.JsonConvert.DeserializeObject(convertedJson);

结果(convertedJson):

{"imperial":" 54 1/4\" "}

答案 1 :(得分:0)

在提供解析器之前,您需要至少转义HTML字符(包括引号)。

如果你控制了你正在接收的JSON的生成器,你也在使用Newtonsoft,那么Newtonsoft.JSON的JsonWriter类有一个名为StringEscapeHandling的属性。

此属性可以包含多个值:DefaultEscapeNonAsciiEscapeHTML(请查看doc

在您的情况下,EscapeHTML是最有趣的。引用文档:

  

EscapeHTML:HTML(&lt;,&gt;,&amp;,&#39;,&#34;)和控制字符(例如换行符)被转义。