# json-bigint 集成说明 ## 1. 安装 建议使用 cnpm 安装: ```powershell cnpm install json-bigint --save ``` > 说明:这个仓库的 `package.json` 已经添加了 `json-bigint` 依赖,执行上面命令会安装依赖并写入 lock 文件。 ## 2. 类型定义 项目内已添加 `types/json-bigint.d.ts`,用于在 TypeScript 中声明模块类型。无需额外安装 @types。 ## 3. 使用方法 / 配置点 1. 项目中已创建 `src/utils/jsonBig.ts`,提供 `safeJsonParse` 与 `safeJsonStringify` 方法,内部使用 `json-bigint` 的 `storeAsString: true` 选项来保证大整数不会丢失精度。 2. 建议通过 `src/api/request.ts` 中的 `request` 封装替代直接调用 `uni.request`。`request` 封装会注入 `Authorization` header(如果本地 token 存在),并把 `dataType` 默认为 `text`,这样能拿到原始 JSON 字符串,随后统一使用 `json-bigint` 做安全解析(避免 Number 精度丢失,特别是 Snowflake / 64-bit ID)。 3. 若某些上传(`uni.uploadFile`)或下载接口返回的 `data` 字段也可能包含大整数,请在对应回调中使用 `safeJsonParse` 解析。 ## 4. 迁移指南 把项目中直接调用 `uni.request(...)` 的地方替换为 `request(...)`: - 例子: - 从 `uni.request({ url: '...', method: 'POST', data: {...} })` - 迁移为 `request({ url: '...', method: 'POST', data: {...} })` `src/api` 下已经示例修改了 `user.ts` 与 `heartRate.ts`,其余模块可按需迁移。 ## 5. 注意事项 - `storeAsString: true` 会把超过 JS 安全整数范围(> Number.MAX_SAFE_INTEGER)的数字转为字符串保存在 data 中。如果你希望得到 BigInteger 可使用 `jsonbig({ storeAsString: false })` 并接收 BigNumber 类型(jsbn),但那会改变使用方式。 - 请根据后端返回策略选择 `storeAsString` 配置。 --- 如果需要我把项目中所有 `uni.request` 调用都替换为 `request`(自动化修改),我可以继续批量替换。