我正在使用JSON.Net作为c#和Razor视图引擎中的大型MVC 3 Web应用程序的序列化器。对于一个视图中的初始页面加载,在脚本标记中使用倾倒了大量JSON @Html.Raw(JsonConvert.SerializeObject(myObject))。
@Html.Raw(JsonConvert.SerializeObject(myObject))
问题在于某些对象的某些值包含撇号(例如O’Brien之类的名称),JSON.Net不会以任何方式转义或编码。
不能对存储在数据库中的值进行预编码,因为这会使其他各种过程变得非常复杂。
有没有一种方法可以强制JSON.Net对其序列化的对象的值进行HTML编码,就像调用JavaScript时内置的JavaScriptSerializer一样JavaScriptSerializer.Serialize(myObject)?或者,是否有一种方法可以解决这个问题?
JavaScriptSerializer.Serialize(myObject)
尽管在某些情况下,您可能希望将一些JSON作为JavaScript字符串或HTML属性值添加到页面中,但是最常见的做法是直接将其直接包含到JavaScript源中,因为JSON是后面的有效JavaScript语法所有。