建议使用 cnpm 安装:
cnpm install json-bigint --save
说明:这个仓库的
package.json已经添加了json-bigint依赖,执行上面命令会安装依赖并写入 lock 文件。
项目内已添加 types/json-bigint.d.ts,用于在 TypeScript 中声明模块类型。无需额外安装 @types。
src/utils/jsonBig.ts,提供 safeJsonParse 与 safeJsonStringify 方法,内部使用 json-bigint 的 storeAsString: true 选项来保证大整数不会丢失精度。src/api/request.ts 中的 request 封装替代直接调用 uni.request。request 封装会注入 Authorization header(如果本地 token 存在)并对返回的 response.data 做 json-bigint 解析,返回解析后的对象。uni.uploadFile)或下载接口返回的 data 字段也可能包含大整数,请在对应回调中使用 safeJsonParse 解析。把项目中直接调用 uni.request(...) 的地方替换为 request(...):
uni.request({ url: '...', method: 'POST', data: {...} })request({ url: '...', method: 'POST', data: {...} })src/api 下已经示例修改了 user.ts 与 heartRate.ts,其余模块可按需迁移。
storeAsString: true 会把超过 JS 安全整数范围(> Number.MAX_SAFE_INTEGER)的数字转为字符串保存在 data 中。如果你希望得到 BigInteger 可使用 jsonbig({ storeAsString: false }) 并接收 BigNumber 类型(jsbn),但那会改变使用方式。storeAsString 配置。如果需要我把项目中所有 uni.request 调用都替换为 request(自动化修改),我可以继续批量替换。