如何在JSON字符串中使用string.replace()?

时间:2019-03-29 12:33:26

标签: javascript json replace

我的后端发送无效的JSON字符串。它将垂直制表符转义为\ v,这在JSON中无效,最终被解析器拒绝。

我正在尝试纠正前端JSON解码器中的问题:

function fromJson(json) {
  if(typeof json === "string") {
    var jsonString = json.replace(/\v/g, "\u000B");
    return JSON.parse(jsonString)
  }
  else {
    return json
  }
}

预期的输出:新字符串,其中\ v的所有实例都替换为unicode行列表。

实际输出:

  

JSON.parse:SyntaxError:位置JSON中的意外令牌v ...

1 个答案:

答案 0 :(得分:1)

JavaScript在正则表达式中将\字符解释为special characters。它期望\之后的字符具有特殊含义,但是v不是特殊字符之一。因此,Unexpected token v in JSON例外。

要解决您的问题,您需要使用另一个\来使正则表达式中的\字符转义,例如json.replace(/\\v/g, "\u000B");