我使用c#来处理JSON格式来解析一些数据,我遇到过这种JSON的情况:
"{"imperial":" 54 1/4" "}"
正如你可以看到
后面有一个英寸符号(双引号)1/4
导致我出错。 我怎么能处理这个双引号?
我使用Newtonsoft.JSON来解析JSON,我尝试了很多方法,例如替换"到'这给了我同样的错误。
我想过正则表达式可能吗?有什么建议吗?
谢谢!
答案 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
的属性。
此属性可以包含多个值:Default
,EscapeNonAscii
和EscapeHTML
(请查看doc)
在您的情况下,EscapeHTML
是最有趣的。引用文档:
EscapeHTML
:HTML(&lt;,&gt;,&amp;,&#39;,&#34;)和控制字符(例如换行符)被转义。