意外的令牌?在JSON的位置x的使用JSON.parse

问题描述:

我试图用JSON.parse解析字符串字面对象:意外的令牌?在JSON的位置x的使用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", 
    ... 
} 

我尝试的回调逃脱?:这部分:

var o = JSON.parse(str,function(k,v){ 
       return (typeof v ==='string')? v.replace('?','') : v; 
}); 

同样:(不工作..任何人都知道如何使用JSON.parse或与任何Node.js的包来做到这一点。

+0

请提供完整的字符串(如这个确切的字符串不给任何错误) – Dekel

+1

'JSON.parse(JSON.stringify({“11.更多信息”:“http://www.mysilte.com/na5638 ?lid = 10064669521“}))'对我来说没有错误(在FF或chrome上)。 – ASDFGerte

+0

不能重播:https://jsfiddle.net/vLk7n78g/。 –

由于您的JSON字符串是真正的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字符串,但有时你不无法控制您获得的输入,所以此解决方案可能对您有所帮助)。