Json.Parse 转义换行符

Posted

技术标签:

【中文标题】Json.Parse 转义换行符【英文标题】:Json.Parse escape newline characters 【发布时间】: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 作为字符串文字?只需将其用作数组文字并跳过手动解析步骤。 那行得通。如果您可以发布答案,我会将其标记为答案。谢谢 【参考方案1】:

您应该像 \\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));

【讨论】:

我没有手动创建 json 字符串。我更新了我的问题。【参考方案2】:

正如@Quentin 建议的那样,您可以跳过将值存储在文字中,而只需执行以下操作:

var jsonObject = @Html.Raw(groceries);

【讨论】:

以上是关于Json.Parse 转义换行符的主要内容,如果未能解决你的问题,请参考以下文章

前端开发JSON.parse 解析json字符串时,遇换行符报错

JSON.parse 解析json字符串时,遇字符串换行符,解析失败

JSON.parse不能解析j包含回车字符的son数据的问题

Javascript:: JSON 解析不接受换行符?

Delphi中JSON回车换行符转义

使用转义换行符和回车符对字符串进行转义