我的后端发送无效的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 ...
答案 0 :(得分:1)
JavaScript在正则表达式中将\
字符解释为special characters。它期望\
之后的字符具有特殊含义,但是v
不是特殊字符之一。因此,Unexpected token v in JSON
例外。
要解决您的问题,您需要使用另一个\
来使正则表达式中的\
字符转义,例如json.replace(/\\v/g, "\u000B");