【发布时间】:2012-08-20 17:35:38
【问题描述】:
我使用 JSON.Net 作为 c# 中的大型 MVC 3 Web 应用程序和 Razor 视图引擎的序列化程序。对于一个视图中的初始页面加载,使用@Html.Raw(JsonConvert.SerializeObject(myObject)) 在脚本标签中转储了大量 JSON。
问题是某些对象的某些值包含撇号(想想像 O'Brien 这样的名字),JSON.Net 不会以任何方式转义或编码。
不可以对存储在数据库中的值进行预编码,因为这会使其他各种过程变得非常复杂。
有没有办法强制 JSON.Net 对其序列化的对象的值进行 HTML 编码,就像调用 JavaScriptSerializer.Serialize(myObject) 时内置的 JavaScriptSerializer 所做的一样?或者,有没有办法在视图中处理这个问题?
【问题讨论】:
-
因为 JSON 坚持对字符串使用双引号字符,所以单引号字符没有问题,也不需要转义。
-
这是不真实的。当您将 JSON 转储到 HTML 页面时,JSON 字符串本身用单引号或双引号括起来,这将使您用来包装字符串的任何字符在 JSON 本身中不可用。这就是问题的症结所在。
-
好吧,如果您将 JSON 作为 string 进行“转储”,那将是一个问题。你为什么不把它作为 JavaScript 放在页面上 - 换句话说,没有任何额外的引号?否则,您可以只使用正则表达式来引用单引号。
-
这就是解决方案。正如您所指出的,没有必要将其作为字符串放入页面中。将该回复作为答案,我会接受。
-
嗯,这似乎是一个不错的猜测 :-) 我会输入的。
标签: c# javascript json asp.net-mvc-3 json.net