views:

747

answers:

3
+1  Q: 

JSON on IE6 (IE7)

Sorry for my inpatience but after weeks staying up late and just having put my web online, I just don't have any left energy to debug... I just can't Google how to implement JSON on IE6 & IE7... I'm using

JSON.stringify(...)

From what I understand JSON is not built in on IE6-7 and has to be dynamically added in in-line code... how do you do that?

I already have jQuery - is it my correct understanding that their JSON engine relies on the browser native one?

Then some comment on invalid JSON code that makes IE6-7 fail, but I thought it wasn't native in IE6-7?

Anyone?

+2  A: 

Since you want to use the JSON.stringify method, you will need to include the Crockford's JSON2 parser in order to support it on IE < 8.

This library complies with the standard methods of the ECMAScript 5th Edition specification and it checks if there is a native implementation available, so on modern browser this native implementation will be used.

CMS
thx - I need the code to include it dynamically *on IE6/7 only* (that is, browser detection is needed also)
David Thorisson
or am I misunderstanding - maybe I don't need it dynamically since JSON uses browser native if available, so it's just a<script src="http://www.json.org/json2.js" type="text/javascript"></script>in the header?
David Thorisson
@David, you could simply include it in your pages, and if the browser supports the JSON global object, it won't do anything, or if you want you could include it dynamically only `if (typeof JSON == 'undefined')`
CMS
Great. It works. Thx!
David Thorisson
A: 

There must be something misunderstood. The object notation has been in JavaScript for a while now (as far as I understand, it's a core concept of JavaScript). I mean, the ability to write code like var o= {a:"b"};
So, if you can do this, you can also call eval('var o= {a:"b"};') and that's the way you "implement JSON" in any browser.

UPDATE: Re-read your post and finally got the point that the problem is serializing objects, not deserializing them. Then you can use the JavaScript library for that: http://www.json.org/json2.js

naivists
emm... why eval() ?
David Thorisson
@David, I think that's the only option you have if you receive JSON data from some external datasource. Isn't it?
naivists
I'm a little afraid of stringifying manually - one more possible error source...
David Thorisson
A: 

"dynamically added in-line code" is using the functionality provided by Douglas Crockfords json2 library, or jQuery's own implementation if the browser version doesn't support it natively.

jQuery does not rely on any JSON decoding functionality provided by the browser. If the browser does support JSON decoding, then jQuery will use it.

Matt
ok using jQuery would be great since it's already included, but why then doesn't JSON.stringify(...) work on IE6-7, is there some special syntax for jQuery JSON?
David Thorisson
JSON.stringify does work on IE6-7, provided you have added the script :\
Matt
jQuery JSON works as follows: `jquery.parseJSON(str)`
Matt