#8034 closed bug (invalid)
parseJSON() fails when special characters are passed in
Reported by: | ievolve | Owned by: | Rick Waldron |
---|---|---|---|
Priority: | low | Milestone: | 1.next |
Component: | core | Version: | 1.4.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I came across a situation where some oddly encoded characters cause the JSON parser to bomb. In my case it was the cancel character (0x18) that a user had submitted.
Worth noting that JSON parse that is at the link below will parse things just fine. Where JSON.parse() bombs just like the jQuery method. https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
Code that contains the cancel character can be copied and pasted from here to relicate the issue. The bad character sits between the n and the s in the word "brains" http://pastie.org/1485459
Change History (4)
comment:2 Changed 13 years ago by
Component: | unfiled → core |
---|---|
Owner: | set to Rick Waldron |
Status: | new → assigned |
Confirmed
comment:4 Changed 13 years ago by
Priority: | undecided → low |
---|---|
Resolution: | → invalid |
Status: | assigned → closed |
This isn't a bug, the JSON specification is clear about which characters need to be escaped in valid json.
2.5. Strings
[...]
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).
As U+0018 lies in this range, throwing an exception is the specified behavior of jQuery.parseJSON.
Running your sample json through the JSON validator also reveals that this is invalid json.
To see this bug in action see the example here: http://jsfiddle.net/eBEeC/
Should note that the bug also occurs in 1.4.4 as well