转义JSON编码字符串中的特殊字符

时间:2013-09-05 01:44:30

标签: asp.net-mvc json knockout.js

我正在使用Knockout和MVC以及我见过的标准方法来获得淘汰视图模型是这样的:

var model = '@Html.Raw(Json.Encode(Model))';
var viewModel = ko.mapping.fromJSON(model);

但是如果我的模型具有包含特殊字符的字符串属性,例如'\ r \ n'我得到一个JSON解析错误'意外令牌'。

所以我相信我需要逃避这些角色,因此它们就像'\\ r \\ n'。怎么做?

我知道我可以针对这个特殊情况做这件事:

var model = '@Html.Raw(Json.Encode(Model).Replace(@"\", @"\\"))';

但可能还有其他标签,单引号。

以下是浏览器中实际渲染模型的示例:

var model = '{"Id":4465,"TextContents":["EYE FILLET STEAK\r\nLINE 2 IS HERE"]}';

1 个答案:

答案 0 :(得分:7)

您的model是字符串,而不是JSON。它在解析JSON之前评估转义字符(如果有的话?) 你为什么需要报价?只需删除它们。

var model = @Html.Raw(Json.Encode(Model));