I'm using JSON.Stringify and JSON.parse everywhere and it works fine with Firefox. It's working no more with IE9 nor does it work in IE8. What can I do?
-
3Can you paste some code?yoda– yoda2011-08-22 10:43:44 +00:00Commented Aug 22, 2011 at 10:43
-
see more here how make it with IE 8 stackoverflow.com/questions/3326893/…ggc– ggc2012-06-07 22:20:31 +00:00Commented Jun 7, 2012 at 22:20
-
see more here stackoverflow.com/questions/3326893/…ggc– ggc2012-06-07 22:21:45 +00:00Commented Jun 7, 2012 at 22:21
4 Answers
JSON.stringify starts with a lower-case s. Both stringify and parse are available in IE8+, but only in standards mode.
Prepend your document with <!DOCTYPE html> if you're currently using quirks mode. Also, watch the capitalization of the JavaScript methods you call - all built-in ones start with a lower-case character.
2 Comments
why do you want to depend on the browser having the object instead just include the script file by Douglas Crockford.. You can find the minifed file here: http://www.json.org/js.html
Once imported you dont have to worry abt the method existing in a browser.
6 Comments
JSON.stringify I was surprised to find it built into the browser (Firefox) even though I was sure it wouldn't work in IE8. I forgot to test in IE8 and sure enough, my app didn't work once I tried it there. Thanks for the helpful solution!For an alternative, in a scenario where you might need to run in strict mode for whatever reason (I have another library that includes "use strict"), you can look here: https://github.com/douglascrockford/JSON-js. I modified this to check first if JSON is undefined, and only generate the function JSON.parse if it is:
if (typeof JSON === "undefined") {
var JSON = {
parse: <insert value of json_parse from library here>
};
}
My issue was application code not working in IE9 (strict mode being used by a participating library, I believe). That solved the problem for me.
Comments
the mere issue is, that sending UTF-8 headers will invalidate the JSON (IE doesn't/didn't like that). as the issue is described, that might still apply for IE9... once wrote a how to, a few years ago. adding JSON support to a browser which can parse native JSON is probably not the optimal solution, since it produces useless overhead - only because failing to deliver the JSON in the expected format.