uneval() does not produce JSON
More playing with JSON and Spidermonkey has revealed yet another incredibly annoying fact (I hate those guys). Spidermonkey provides a lovely uneval()
function, that does the exact opposite of eval()
- turns JS objects into strings. It works on almost everything, and make life very very nice. There's also Object.toSource()
which does something similar (but not the same - try uneval("")
vs "".toSource()
).
But the strings that uneval
produce are not valid JSON, as I have been assuming. I've been getting steadily more worked up at all the JSON parsers in the world, refusing to parse things that are clearly valid JavaScript, and eventually I go look at the spec, which fails to list '
as a valid string delimiter. And guess what delimiter uneval
produces? Yay. So all the parsers are fine, and it's just SpiderMonkey that's broken.
Fortunately, Mochikit provides a nice serializeJSON() function.