意外的标记 ?在位置x的JSON中使用JSON.parse

时间:2016-10-22 02:58:12

标签: javascript json escaping

我正在尝试使用JSON.parse

var o = JSON.parse(str);

我收到了这个错误:

SyntaxError: Unexpected token ? in JSON at position 362
    at Object.parse (native)

知道错误发生在此部分的?上:

{...
     "11. More Info":"http://www.mysilte.com/na5638\?lid=10064669521",
  ...
}

我尝试通过?

的回调来转义JSON.parse
var o = JSON.parse(str,function(k,v){
                return (typeof v ==='string')? v.replace('?','') : v;
 });

相同:(,不起作用..任何人都知道如何使用JSON.parse或任何node.js包执行此操作。

1 个答案:

答案 0 :(得分:1)

由于您的json-string是一个真正的json字符串(但可能接近),您可能希望"修复"您在字符串中遇到的\\?问题。

以下是一个例子:



a = '{"11. More Info":"http://www.mysilte.com/na5638\\?lid=10064669521"}'
try {
  JSON.parse(a)
} catch (e) {
  console.log("can't parse the string as JSON string")
}
json_obj = JSON.parse(a.replace("\\?", "?"))
console.log(json_obj)




我真的不推荐这个,你应该确保在解析它之前得到一个正确的json-string,但有时你不能控制你得到的输入,所以这个解决方案可能帮助你)。