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

use*_*689 3 asp.net-mvc json knockout.js

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

var model = '@Html.Raw(Json.Encode(Model))';
var viewModel = ko.mapping.fromJSON(model);
Run Code Online (Sandbox Code Playgroud)

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

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

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

var model = '@Html.Raw(Json.Encode(Model).Replace(@"\", @"\\"))';
Run Code Online (Sandbox Code Playgroud)

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

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

var model = '{"Id":4465,"TextContents":["EYE FILLET STEAK\r\nLINE 2 IS HERE"]}';
Run Code Online (Sandbox Code Playgroud)

Ili*_*a G 7

model是一个字符串,而不是JSON.它在解析JSON之前评估转义字符(如果有的话)?为什么需要引号?只需删除它们.

var model = @Html.Raw(Json.Encode(Model));
Run Code Online (Sandbox Code Playgroud)