Json.Parse转义换行符

我有一个页面,我试图使用JSON.parse解析json字符串

'[{"Name":"Eggs","Complete":false,"Notes":"Notes here\n"},{"Name":"Sugar","Complete":false,"Notes":null}]' 

但是下面的代码给出了错误"Uncaught SyntaxError: Unexpected token"

 var groceriesJson = JSON.parse(jsonString); 

然后我开始知道它是因为在json字符串中的\n 。 所以我尝试了这个解决方案 。 但没有运气。 仍然是同样的错误"Uncaught SyntaxError: Unexpected token"

 function escapeSpecialChars(jsonString) { return jsonString.replace(/\\n/g, "\\n") .replace(/\\'/g, "\\'") .replace(/\\"/g, '\\"') .replace(/\\&/g, "\\&") .replace(/\\r/g, "\\r") .replace(/\\t/g, "\\t") .replace(/\\b/g, "\\b") .replace(/\\f/g, "\\f"); } var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 

有任何想法吗? 谢谢

—更新—-

我不是手动创建这个字符串,我有c#代码从c#对象创建json字符串

  var jss = new System.Web.Script.Serialization.JavaScriptSerializer(); var groceries = jss.Serialize(Model); 

然后在我的JavaScript代码中

 var jsonString = '@Html.Raw(groceries)' var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 

您应该在\\n转义\ ,您的JSON变为:

 '[{"Name":"Eggs","Complete":false,"Notes":"Notes here\\n"},{"Name":"Sugar","Complete":false,"Notes":null}]'; 

如果您无法访问JSON,那么您的函数应该是:

 function escapeSpecialChars(jsonString) { return jsonString.replace(/\n/g, "\\n") .replace(/\r/g, "\\r") .replace(/\t/g, "\\t") .replace(/\f/g, "\\f"); } var groceriesJson = JSON.parse(escapeSpecialChars(jsonString)); 

正如@Quentin建议您可以跳过将值存储在文字中并简单地执行以下操作:

 var jsonObject = @Html.Raw(groceries);