【问题标题】:Json.Parse escape newline charactersJson.Parse 转义换行符
【发布时间】: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


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多