Package Exports
- json-with-bigint
- json-with-bigint/json-with-bigint.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (json-with-bigint) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
JSON with BigInt
JS library that allows you to easily serialize and deserialize data with BigInt values
Why would I need JSON-with-BigInt?
3 reasons:
- You need to convert some data to/from JSON and it includes BigInt values
- Native JSON.stringify() and JSON.parse() methods in JS can't work with BigInt
- Other libraries and pieces of code that you'll find either can't solve this problem while supporting consistent round-trip operations (meaning, you will not get the same BigInt values if you serialize and then deserialize them) or requires you to change your JSON or the way you want to work with your data
Good things about JSON-with-BigInt
✔️ Supports consistent round-trip operations with JSON
const data = { bigNumber: 9007199254740992n };
JSONParse(JSONStringify(data)).bigNumber === 9007199254740992n // true
✔️ No need to change your JSON or the way you want to work with your data
✔️ Parses and stringifies all other values other than big numbers same way as native JSON methods in JS do
✔️ Does not contaminate your global space (unlike monkey-patching solution)
✔️ You don't have to memorize this library's API, you already know it, just skip the dot, use camelCase and that's it (JSONParse(), JSONStringify())
✔️ Can be used in a TypeScript project (.d.ts file included)
✔️ Size: 301 bytes (minified and gzipped)
✔️ No dependencies
Getting Started
This library has no default export. Why it's a good thing
NPM
Add this library to your project using NPM
npm i json-with-bigint
and use it
import { JSONParse, JSONStringify } from 'json-with-bigint';
const userData = {
someBigNumber: 9007199254740992n
};
localStorage.setItem('userData', JSONStringify(userData));
const restoredUserData = JSONParse(localStorage.getItem('userData'));
CDN
Add this code to your HTML
<script src="https://cdn.jsdelivr.net/npm/json-with-bigint/json-with-bigint.min.js"></script>
and use it
<script>
const userData = {
someBigNumber: 9007199254740992n
};
localStorage.setItem('userData', JSONStringify(userData));
const restoredUserData = JSONParse(localStorage.getItem('userData'));
</script>
Manually
Download json-with-bigint.min.js from this repository to your project's folder and use it
<script src="./json-with-bigint.min.js"></script>
<script>
const userData = {
someBigNumber: 9007199254740992n
};
localStorage.setItem('userData', JSONStringify(userData));
const restoredUserData = JSONParse(localStorage.getItem('userData'));
</script>
How to use
JSONParse
- works just like native JSON.parse, but supports BigInt
JSONStringify
- works just like native JSON.stringify, but supports BigInt
Examples:
JSONParse('{"someBigNumber":9007199254740992n}')
JSONStringify({ someBigNumber: 9007199254740992n })