json-bigint-integration.md 1.9 KB

json-bigint 集成说明

1. 安装

建议使用 cnpm 安装:

cnpm install json-bigint --save

说明:这个仓库的 package.json 已经添加了 json-bigint 依赖,执行上面命令会安装依赖并写入 lock 文件。

2. 类型定义

项目内已添加 types/json-bigint.d.ts,用于在 TypeScript 中声明模块类型。无需额外安装 @types

3. 使用方法 / 配置点

  1. 项目中已创建 src/utils/jsonBig.ts,提供 safeJsonParsesafeJsonStringify 方法,内部使用 json-bigintstoreAsString: true 选项来保证大整数不会丢失精度。
  2. 建议通过 src/api/request.ts 中的 request 封装替代直接调用 uni.requestrequest 封装会注入 Authorization header(如果本地 token 存在)并对返回的 response.datajson-bigint 解析,返回解析后的对象。
  3. 若某些上传(uni.uploadFile)或下载接口返回的 data 字段也可能包含大整数,请在对应回调中使用 safeJsonParse 解析。

4. 迁移指南

把项目中直接调用 uni.request(...) 的地方替换为 request(...)

  • 例子:
    • uni.request({ url: '...', method: 'POST', data: {...} })
    • 迁移为 request({ url: '...', method: 'POST', data: {...} })

src/api 下已经示例修改了 user.tsheartRate.ts,其余模块可按需迁移。

5. 注意事项

  • storeAsString: true 会把超过 JS 安全整数范围(> Number.MAX_SAFE_INTEGER)的数字转为字符串保存在 data 中。如果你希望得到 BigInteger 可使用 jsonbig({ storeAsString: false }) 并接收 BigNumber 类型(jsbn),但那会改变使用方式。
  • 请根据后端返回策略选择 storeAsString 配置。

如果需要我把项目中所有 uni.request 调用都替换为 request(自动化修改),我可以继续批量替换。