@aeternity/json-bigint

中文文档
0.3.1发布于 2020/06/17MITCommonJS近 30 天下载 2996

JSON.parse 与大意支持

中文使用文档

json- bigint (日语)

Build Status NPM

JSON.parse/被大意支持. 根据道格拉斯克罗克福德 JSON.js (英语) 软件包和 大数.js 图书馆.

虽然大多数JSON解析器假设数字值的精度限制与IEEE 754双倍相同,但JSON规格 没有 说说数字精度 十进制中的任何浮点数(可选的科学)注音都是有效的JSON值. 将可能从IEEE 754整数精度中掉出作为JSON api中的字符串的数值序列化是一个好主意,但 { "value" : 9223372036854775807}例如,仍然是一个有效的RFC4627 JSON字符串,在大多数JS运行时间中,结果是 JSON.parse 是该对象 : { value: 9223372036854776000 }

==========

示例:

var JSONbig = require('json-bigint');

var json = '{ "value" : 9223372036854775807, "v2": 123 }';
console.log('Input:', json);
console.log('');

console.log('node.js bult-in JSON:')
var r = JSON.parse(json);
console.log('JSON.parse(input).value : ', r.value.toString());
console.log('JSON.stringify(JSON.parse(input)):', JSON.stringify(r));

console.log('\n\nbig number JSON:');
var r1 = JSONbig.parse(json);
console.log('JSONbig.parse(input).value : ', r1.value.toString());
console.log('JSONbig.stringify(JSONbig.parse(input)):', JSONbig.stringify(r1));

输出 :

Input: { "value" : 9223372036854775807, "v2": 123 }

node.js bult-in JSON:
JSON.parse(input).value :  9223372036854776000
JSON.stringify(JSON.parse(input)): {"value":9223372036854776000,"v2":123}


big number JSON:
JSONbig.parse(input).value :  9223372036854775807
JSONbig.stringify(JSONbig.parse(input)): {"value":9223372036854775807,"v2":123}

选项

解析器的行为可以通过“ 选项” 来描述

选项。 严格、布尔、默认假

指定解析应“限制”在解析字符串中报告重复键. 默认遵循标准json允许的,并类似JSON的行为. 解析,但将上一个值与上一个指定给重复键相覆盖.

设置选项。 严格 = 真实值会在这种重复键出事时发生故障,从而警告您可能丢失的信息.

示例:

var JSONbig = require('json-bigint');
var JSONstrict = require('json-bigint')({"strict": true});

var dupkeys = '{ "dupkey": "value 1", "dupkey": "value 2"}';
console.log('\n\nDuplicate Key test with both lenient and strict JSON parsing');
console.log('Input:', dupkeys);
var works = JSONbig.parse(dupkeys);
console.log('JSON.parse(dupkeys).dupkey: %s', works.dupkey);
var fails = "will stay like this";
try {
    fails = JSONstrict.parse(dupkeys);
    console.log('ERROR!! Should never get here');
} catch (e) {
    console.log('Succesfully catched expected exception on duplicate keys: %j', e);
}

产出

Duplicate Key test with big number JSON
Input: { "dupkey": "value 1", "dupkey": "value 2"}
JSON.parse(dupkeys).dupkey: value 2
Succesfully catched expected exception on duplicate keys: {"name":"SyntaxError","message":"Duplicate key \"dupkey\"","at":33,"text":"{ \"dupkey\": \"value 1\", \"dupkey\": \"value 2\"}"}

选项.storeAsString,布尔,默认虚假

指定是否将 BigInts 作为字符串存储在对象中,而不是默认的大数字.

注意,这是一个危险的行为,因为它打破了能够不改变数据类型而转换回转和forth的默认功能(因为这会将所有的 BigInts 转换为活塞字符串).

示例:

var JSONbig = require('json-bigint');
var JSONbigString = require('json-bigint')({"storeAsString": true});
var key = '{ "key": 1234567890123456789 }';
console.log('\n\nStoring the BigInt as a string, instead of a BigNumber');
console.log('Input:', key);
var withInt = JSONbig.parse(key);
var withString = JSONbigString.parse(key);
console.log('Default type: %s, With option type: %s', typeof withInt.key, typeof withString.key);

产出

Storing the BigInt as a string, instead of a BigNumber
Input: { "key": 1234567890123456789 }
Default type: object, With option type: string

版本与发布记录

@aeternity/json-bigint 共发布 1 个版本,首次发布于 2020/06/17;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.3.1latest2020/06/176 年前

关于 @aeternity/json-bigint 的常见问题

@aeternity/json-bigint 是什么?

JSON.parse 与大意支持

如何安装 @aeternity/json-bigint?

在项目目录运行 npm install @aeternity/json-bigint,或使用 pnpm add / yarn add / bun add。

@aeternity/json-bigint 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/aeternity__json-bigint 是否存在。

@aeternity/json-bigint 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aeternity/json-bigint 可以商用吗?

@aeternity/json-bigint 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aeternity/json-bigint 的下载量有多少?

根据 npm 官方下载统计,@aeternity/json-bigint 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,996 次,日均约 100 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aeternity/json-bigint 还在维护吗?

最新版本 0.3.1 发布于 2020/06/17(6 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/06/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。