2 comments

[ 2.9 ms ] story [ 14.8 ms ] thread
Yawn. JSON isn't valid Javascript, but it sure is a valid Javascript data structure.

I often use code like

     echo "var d = ", json_encode($data), ";\n";
and be 100% sure I'm generating perfectly valid Javascript, no matter what is in $data. (Well, apart from circular references, and "resources".)
I think the article's point was that Unicode characters U+2028 and U+2029 are illegal in JavaScript string literals.

Yet, the JSON specification (RFC 4627) officially allows them to exist in JSON string literals:

"All Unicode characters may be placed within the quotation marks except for the characters that must be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F)."

So with U+2028 or U+2029 you can construct a valid JSON object that JavaScript can't parse.