1.0.0 • Published 3 years ago

@smikhalevski/json-bigint v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

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
parse49 35215 1368 874
stringify55 06627 52917 210
1.0.0

3 years ago