2012年11月12日月曜日

JSON.parseでハマった

JSON.parseでハマったのでメモ。
調べた感じだと、Chromeでのみ起こるらしい。


現象

JavaScriptを呼び出しているHTMLの1行目に対して、以下のエラーが出る。
Uncaught SyntaxError: Unexpected end of input
大変切り分けづらかったが、JSON.parse()をコメントアウトするとこのエラーが消えることに気づいた。
どうやらJSON.parse()が悪いらしい。

なお、JSON.parse()の呼び出しの形はこんな感じ。
//  Read LocalStorage on ChromeExtension.
var value = JSON.parse( localStorage["hoge"] )
という訳で、対策を探した。

対策

JSON.parseとエラー文で検索して、以下のStackOverflowを見つけた。


コレによると、
var value = JSON.parse( hoge || "null" )
とすると良いのだそうだ。

原因

ChromeのJSON.parseは、空文字が入るとおかしなことになるらしい。
JSでは空文字列はfalse性を持つので、上記の対策で通るという事。

そのエラー発生は良いとしても、JSON.parse()のエラーでなくてEnd of Inputなんてわかりづらいエラー、それもHTMLの1行目なんかに出るのが悲しい。
カッコが間違ってないか、かなり探してしまったよ・・・

0 件のコメント:

コメントを投稿