2016-10-22 6 views
0

を使用してのx位置で私はJSON.parseを使用して、オブジェクトリテラルに文字列を解析しようとしています:予期しないトークンですか? JSONに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またはクロムで)。 – ASDFGerte

+0

再作成できません:https://jsfiddle.net/vLk7n78g/。 –

答えて

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文字列を取得することを確認する必要があり、時にはあなたドンあなたが得た入力を制御できないので、この解決策が役に立ちます)。

関連する問題