【发布时间】:2014-12-12 19:05:30
【问题描述】:
我有一个页面,我正在尝试使用 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);
然后我才知道这是因为 \n 在 json 字符串中。所以我确实尝试了this solution。但没有运气。还是一样的错误"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# 对象创建 json 字符串的 c# 代码
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));
【问题讨论】:
-
为什么要在 JavaScript 中嵌入 JSON 作为字符串文字?只需将其用作数组文字并跳过手动解析步骤。
-
那行得通。如果您可以发布答案,我会将其标记为答案。谢谢
标签: javascript c# regex json escaping