我正在尝试使用JSON.parse将String解析为文字对象:

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软件包来执行此操作。

最佳答案

由于您的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,但有时您无法控制所获得的输入,因此此解决方案可能会对您有所帮助。

关于javascript - 意外的标记 ?使用JSON.parse在位置x的JSON中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40187881/

10-11 09:26
查看更多