phpでJSONを生成してjsに渡す時の注意点

jsonを生成する時に単純に

$json = json_encode($str);

としていないだろうか。単なる数値だけならこれでよいが、例えば、

$str[1] = "G'men '75";
$str[2] = '\2,800';
$str[3] = 'my name is "john"';

というような文字列をエンコードしてjavascriptに渡すとエラーになる。

$json = json_encode($str, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS );
$json = str_replace('\\', '\\\\', $json);

とするのがよい。