I need a JSON polyfill to support IE 7 and some IE 8 and IE 9 modes. Should I pick JSON 2 or JSON 3? Obviously JSON 3 is a more modern implementation, but for example a site like html5please doesn't even mention it and recommends JSON 2.
I was wondering the same thing. JSON3 says:
Changes from JSON 2
JSON 3...
- Correctly serializes primitive wrapper objects (Issue #28).
- Throws a
TypeError
when serializing cyclic structures (JSON 2 recurses until the call stack overflows).- Utilizes feature tests to detect broken or incomplete native JSON implementations (JSON 2 only checks for the presence of the native functions). The tests are only executed once at runtime, so there is no additional performance cost when parsing or serializing values.
In contrast to JSON 2, JSON 3 does not...
- Add
toJSON()
methods to theBoolean
,Number
, andString
prototypes. These are not part of any standard, and are made redundant by the design of thestringify()
implementation.- Add
toJSON()
ortoISOString()
methods toDate.prototype
. See the note about date serialization below.
JSON 3 is a polyfill compatible with nearly all JavaScript platforms. It is a drop-in replacement for JSON 2 that uses feature tests to detect broken and incomplete native JSON implementations, supports asynchronous module loaders and
has
-aware optimizers, and is built to specification standards.JSON 2 is an older, alternative polyfill by Douglas Crockford.