19

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?

blong
  • 2,815
  • 8
  • 44
  • 110
saurabh ranu
  • 1,351
  • 6
  • 18
  • 24
  • 3
    Can you paste some code? – yoda Aug 22 '11 at 10:43
  • see more here how make it with IE 8 http://stackoverflow.com/questions/3326893/json-stringify-supported-by-ie-8/10940623#10940623 – ggc Jun 07 '12 at 22:20
  • see more here http://stackoverflow.com/questions/3326893/json-stringify-supported-by-ie-8/10940623#10940623 – ggc Jun 07 '12 at 22:21

4 Answers4

35

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.

Community
  • 1
  • 1
phihag
  • 278,196
  • 72
  • 453
  • 469
  • 6
    In addition, watch out if you're developing locally against a localhost address. A Windows Update to IE9 a few weeks ago caused it to begin automatically using compatibility mode for some localhost addresses, which can result in JSON.parse/stringify suddenly not being available even when your markup shouldn't have triggered quirks mode. – Dave Ward Aug 22 '11 at 14:40
  • i have something already like – saurabh ranu Aug 23 '11 at 06:34
11

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.

Baz1nga
  • 15,485
  • 3
  • 35
  • 61
  • Looks better idea to me but which file i should add. There are a lot of files https://github.com/douglascrockford/JSON-js – saurabh ranu Aug 22 '11 at 19:03
  • Use json2.js. That's the latest one.. Get the minified 1 if u can – Baz1nga Aug 22 '11 at 19:05
  • Nothing special just a file with no spaces returns and minified variable names etc to reduce the file size.. Google bat us minification and u will find what it is.. If thud minified file isnt there pickup json2.js and u can think of minifying it if u want later – Baz1nga Aug 22 '11 at 19:12
  • When I started using `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! – blong Sep 16 '11 at 18:04
  • 4
    I would suggest to load json.org conditionally only if browser does not support JSON object navively by checking if window.JSON is defined. Otherwise you increase an number of downloaded JS files – Maksym Kozlenko Aug 31 '12 at 07:19
  • Might the json2.js run slower than what is natively supported in IE10 as well? (another reason to conditionally load it, rather than always loading?) – Jason Parker Jul 08 '13 at 18:51
0

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.

Uche
  • 105
  • 1
  • 8
0

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.

Martin Zeitler
  • 1
  • 19
  • 155
  • 216