Json.Parse转义换行符 [英] Json.Parse escape newline characters
问题描述
'[{Name :Eggs,Complete:false,Notes:Notes here\\\
},{Name:Sugar,Complete:false,Notes:null}]'
但以下代码给出错误未捕获的语法错误:意外的令牌
var groceriesJson = JSON.parse(jsonString);
然后我知道它是因为 \\\
在json字符串中。所以我试过这个解决方案 。但没有运气。仍然相同的错误
未捕获的SyntaxError:意外的标记
function escapeSpecialChars jsonString){
return jsonString.replace(/ \\\\
/ g,\\\\
)
.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));
你应该逃避 \
如 \\\\
,您的JSON变为:
'[{Name:Eggs,Complete:false,Notes:Notes here\\\\
},{Name:Sugar完成 :假的, 注意事项:空}];
如果您无法访问JSON,那么您的功能应该是:
function escapeSpecialChars(jsonString){
return jsonString.replace(/ \\\
/ g,\\\\
)
.replace(/ \r / g,\\r)
.replace(/ \t / g,\\t)
.replace(/ \f / g,\\f);
}
var groceriesJson = JSON.parse(escapeSpecialChars(jsonString));
I have a page where I am trying to parse following json string using JSON.parse
'[{"Name":"Eggs","Complete":false,"Notes":"Notes here\n"},{"Name":"Sugar","Complete":false,"Notes":null}]'
But following code gives error "Uncaught SyntaxError: Unexpected token"
var groceriesJson = JSON.parse(jsonString);
Then I came to know that its because of \n
in json string. So I did try this solution. But no luck. Still same error "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));
Any ideas? Thanks
---UPDATE----
I am not creating this string manually, I have c# codes that creates json string from c# objects
var jss = new System.Web.Script.Serialization.JavaScriptSerializer();
var groceries = jss.Serialize(Model);
then in javascript codes I have
var jsonString = '@Html.Raw(groceries)'
var groceriesJson = JSON.parse(escapeSpecialChars(jsonString));
You should just escape the \
as in \\n
, your JSON becoming :
'[{"Name":"Eggs","Complete":false,"Notes":"Notes here\\n"},{"Name":"Sugar","Complete":false,"Notes":null}]';
If you cannot have access to the JSON, then your function should be :
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));
这篇关于Json.Parse转义换行符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!