c#之如何解析属性值之一中带有双引号的 JSON 对象

jiqing9006 阅读:43 2025-12-25 22:24:30 评论:0

如果我有一个 json 字符串,其属性值之一具有 double quote在其中,我无法解析它。

例如,如果我的对象是 { "Name" : "Six \" Pipe" }那么以下给了我一个错误 - Unexpected token P .

var str = '{ "Name" : "Six \" Pipe" }'; 
JSON.parse(str); //error 
$.parseJSON(str); //error 

字符串在 Razor View 中形成如下 -

 var str = new JavaScriptSerializer().Serialize(obj); 

然后在 JavaScript 中我正在做

var obj = JSON.parse('@(Html.Raw(str))'); 

如何解析这样的字符串?

请您参考如下方法:

你应该转义反斜杠,因为在 JS 中它只会将 \" 转换为 " 并且会使 JSON 不正确。 The blackslash is discarded by javascript .

所以正确的字符串是-

var str = '{ "Name" : "Six \\" Pipe" }'; 
JSON.parse(str); //works 

编辑:

所以,如果你想在 JS 中创建一个文字反斜杠,你必须转义它。您可以在创建此字符串并对键的值进行双重转义时执行此操作。 解决这个问题的一种方法可能是 -

对字符串(键值)进行 html 编码,就像: " 而不是 \" 等。对于我来说,.Net 似乎很简单。我不确定,但 HttpServerUtility.HtmlEncode 可以提供帮助。
然后在 javascript 方面,您可以立即解析 - fiddle


标签:C#
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号