@smikhalevski/json-bigint
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

json-bigint

The symmetrical, backward compatible, and unambiguous JSON serializer/parser with bigint support.

npm install --save @smikhalevski/json-bigint

Usage

Integers from JSON are parsed as BigInt while float numbers are parsed as number.

import * as JsonBigInt from '@smikhalevski/json-bigint';

JsonBigInt.stringify({foo: 123n, bar: 123}); // → '{"foo":123,"bar":123.0}'

JsonBigInt.parse('{"foo":123,"bar":123.0}'); // → {foo: 123n, bar: 123}

You can create custom parsers and serializers:

import bigint from 'bigint';
import {createJsonParser, createJsonStringifier} from '@smikhalevski/json-bigint';

const stringifyJson = createJsonStringifier({
  isBigInt: (value) => value instanceof bigint,
  stringifyBigInt: (value) => value.toString(),
});

const parseJson = createJsonParser({
  parseBigInt: (str) => bigint(str),
});

stringifyJson({foo: bigint(123), bar: 123}); // → '{"foo":123,"bar":123.0}'

parseJson('{"foo":123,"bar":123.0}'); // → {foo: bigint(123), bar: 123}

Performance

Clone this repo and use npm ci && npm run perf to run the performance testsuite.

Results are in operations per second. The higher number is better.

native JSON @smikhalevski/json-bigint @sidorares/json-bigint
parse 49 352 15 136 8 874
stringify 55 066 27 529 17 210

Readme

Keywords

Package Sidebar

Install

npm i @smikhalevski/json-bigint

Weekly Downloads

7

Version

1.0.0

License

MIT

Unpacked Size

29.5 kB

Total Files

19

Last publish

Collaborators

  • smikhalevski