メモ: U+2028,U+2029が含まれるJSONデータをeval関数を使ってデコードするとエラーになる

標準

※firefoxとwebkitで確認してます。

JSONを使ってデータをやり取りするととっても便利なのですが、最近それでハマったのでメモ。

UNICODEには、改行文字がいろいろと定義されているみたいです。
UAX #13: Unicode Newline Guidelines

その中の”LINE SEPARATOR (U+2028)”と”PARAGRAPH SEPARATOR (U+2029)”を含む文字列をJSONデータとしてデコードする際にeval関数を利用すると構文エラーが発生し、うまくパースできません。

テストコードはこんな感じ。

解決策としては、evalにかける前に、

等として、LS,PSを削除するまたは、LF等の別の改行コードに置き換えるのがよろしいかなと。

もしくは、jQueryのajax系のメソッドを利用すると問題なくパースしてくれるようです。

コメントを残す

Page optimized by WP Minify WordPress Plugin