2011-01-21 3 views
0

JSON解析が失敗する原因となっている隠れた文字があります。これらの隠された文字が私のjsonをクラッシュさせただけで、文字列を適切にエスケープする最良の方法は何ですか?JSON検証が失敗する原因となっているエスケープ隠し文字

ここにコードがあります。目に見えない文字は、見えない文字を取り除くまで、「頭脳」のnとsの間にあります。JSON.parse()は失敗します...目に見えない文字を取り除く方法は?

var mystring='{"invis":"their brains process differently"}'; 
console.log("cool" + mystring); 
console.log(JSON.parse(mystring)); 

あなたが問題を見るためにコピー&ペーストしたい場合は、私は上記のコードでは、実際に目に見えない文字を削除したことがわかったが、それはpastieにここにある。注: See the code on pastie

+0

隠された文字は何ですか?あなたの文字列のエンコーディングを知っていますか? –

+0

実際には正確ではありません –

+0

それはUTF-8としてDBに入っていました。 –

答えて

2

何とかキャンセルの文字(0x18)があなたの文字列に入りました。単に正規表現で置き換えることができます。

var mystring='{"invis":"their brains process differently"}'; 
mystring = mystring.replace(/\x18/g, ""); 
console.log("cool" + mystring); 
console.log(JSON.parse(mystring)); 
+1

ファンキーな目に見えないような一般的な修正があるのでしょうか? JSON.parse()を破る文字列です。ミストリングをもう少しフレンドリーなものにキャストする方法はありますか? –

+0

@Anthony Webb:正規表現を "/ [^ \ w \ s]/g"に変更すると、非空白の非英数字が削除されます。 :、{、}、(、)などの特殊文字を使用するには、正規表現を拡張する必要があります。 – Sparafusile

+0

JSON.parse()が正しく解析できないことは奇妙なことです最初は? –

関連する問題