https://github.com/qubitproducts/json-bourne
Drop in replacement for JSON that standardizes Array.toJSON and Date.toJSON
https://github.com/qubitproducts/json-bourne
ceh implement
Last synced: 6 months ago
JSON representation
Drop in replacement for JSON that standardizes Array.toJSON and Date.toJSON
- Host: GitHub
- URL: https://github.com/qubitproducts/json-bourne
- Owner: QubitProducts
- Created: 2015-02-03T11:38:08.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2021-02-10T16:29:40.000Z (about 5 years ago)
- Last Synced: 2024-11-14T10:33:28.932Z (over 1 year ago)
- Topics: ceh, implement
- Language: JavaScript
- Size: 50.8 KB
- Stars: 15
- Watchers: 28
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

[](https://github.com/feross/standard)
[ ](https://codeship.com/projects/79926)
Normalizes the JavaScript JSON API against overwritten `Array.prototype.toJSON` and IE8's unstandardized version of `Date.prototype.toJSON`.
Advantages over [JSON 3](https://github.com/bestiejs/json3)
- Much smaller, only a few lines rather than 4KB
- Uses native stringify and parse methods
- Runs much quicker on older browsers
Known issues
- Does not protect against all monkeypatching
- Can be slower at stringifying on newer browsers (see [Benchmarks](#benchmarks))
- Not compatible with IE7 or below
Installation
============
```bash
$ npm install --save json-bourne
```
Motivation
==========
JSON Bourne is intended for use in code that you'll execute on websites you don't control. Such websites can break the native `JSON.stringify` implementation by changing `Array.prototype.toJSON`, specifically if they use prototype.js version 1.6 or under. JSON Bourne also normalizes `Date.prototype.toJSON`, correcting the unstandard implementation for IE8. Any changes to prototypes are restored immediately after stringifying.
Usage
=====
JSON Bourne is a drop in replacement for JSON, replicating the standard `parse` and `stringify` methods exactly.
```javascript
var JSON = require('json-bourne')
console.log(JSON.parse('{"bourne": "legacy"}'))
// Logs { bourne: "legacy" }
console.log(JSON.stringify({"bourne": "ultimatum"}))
// Logs { "bourne": "ultimatum" }
```
Compatibility
=============
Tested on IE8+, Chrome, Firefox, Opera and Safari.
Benchmarks
==========
- [Stringify](http://jsperf.com/json-bourne-stringify)
- [Parse](http://jsperf.com/json-bourne-parse)
Want to work on this for your day job?
======================================
This project was created by the Engineering team at [Qubit](http://www.qubit.com). As we use open source libraries, we make our projects public where possible.
We’re currently looking to grow our team, so if you’re a JavaScript engineer and keen on ES2016 React+Redux applications and Node micro services, why not get in touch? Work with like minded engineers in an environment that has fantastic perks, including an annual ski trip, yoga, a competitive foosball league, and copious amounts of yogurt.
Find more details on our [Engineering site](https://eng.qubit.com). Don’t have an up to date CV? Just link us your Github profile! Better yet, send us a pull request that improves this project.