HarmonyOS鸿蒙Next中JsonBigInt的出处来自哪里?
HarmonyOS鸿蒙Next中JsonBigInt的出处来自哪里? 由于axios内部会对后端返回的数据做JSON.parse操作,会导致超长数字的精度丢失。通过重写transformResponse方法,修改返回数据,导入json-bigint包,使用JsonBigInt.parse(data)转换返回数据。
import axios from '@ohos/axios';
axios<string, AxiosResponse<string>, null>({
url: 'https://www.xxx.com/info',
method: 'get',
responseType: 'array_buffer',
transformResponse:(data)=>{
return JsonBigInt.parse(data)
}
}).then((res: AxiosResponse) => {
// 处理请求成功的逻辑
})
请问上述代码中JsonBigInt的出处来自哪里(三方库吗?)?
更多关于HarmonyOS鸿蒙Next中JsonBigInt的出处来自哪里?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
来自json-bigint三方库。
import JSONBigInt from '[@ohmos](/user/ohmos)/json-bigint';
更多关于HarmonyOS鸿蒙Next中JsonBigInt的出处来自哪里?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
JsonBigint 来自 json-bigint-arkts 库,基于json-bigint 原库1.0.0版本进行适配。
所有功能代码已经转换为ArkTS文件,你可以在OpenHarmony三方库中心仓找到它。
使用 ohpm 安装:
ohpm i json-bigint-arkts
使用示例:
import JsonBigint from 'json-bigint-arkts';
const json = '{ "value" : 9223372036854775807, "v2": 123 }';
console.log('Input:', json);
console.log('');
console.log('node.js built-in JSON:');
let r: ESObject = JSON.parse(json);
console.log('JSON.parse(input).value : ', r.value.toString());
console.log('JSON.stringify(JSON.parse(input)):', JSON.stringify(r));
const jsonBigint = new JsonBigint();
console.log('\n\nbig number JSON:');
let r1: ESObject = jsonBigint.parse(json);
console.log('JSONbig.parse(input).value : ', r1.value.toString());
console.log('JSONbig.stringify(JSONbig.parse(input)):', jsonBigint.stringify(r1));
expect(r1.value.toString()).assertEqual('9223372036854775807');
expect(jsonBigint.stringify(r1)).assertEqual(`{"value":9223372036854775807,"v2":123}`);
JsonBigInt
JsonBigInt是HarmonyOS Next中用于处理JavaScript大整数的API,属于ArkTS语言规范的一部分。它主要用于解决JavaScript中Number类型无法精确表示超过53位整数的问题,通过BigInt类型提供大整数运算支持。该API的出处是ECMAScript 2020标准中的BigInt规范,鸿蒙在此基础上进行了原生集成和优化。
在HarmonyOS Next的ArkTS/TypeScript开发环境中,JsonBigInt 并非系统内置的API,而是一个第三方JavaScript/TypeScript库。
其核心出处和用途如下:
-
库的来源:它是一个名为
json-bigint的第三方npm包。这个库专门用于解决JavaScript/TypeScript中JSON.parse()在处理超出Number安全整数范围(即-2^53+1到2^53-1,或-9007199254740991到9007199254740991)的大整数时,会发生精度丢失的问题。 -
工作原理:
json-bigint库提供了一个parse方法(在代码中通常被导入为JsonBigInt或类似对象)。该方法在解析JSON字符串时,会将原本可能丢失精度的长数字字符串自动转换为JavaScript的BigInt类型,从而完整保留其精度。 -
在HarmonyOS项目中的使用:
- 你需要通过HarmonyOS项目对应的包管理器(如
ohpm)或通用的npm,将此库作为依赖安装到你的工程中。 - 安装命令通常类似于:
ohpm install json-bigint或npm install json-bigint。 - 安装完成后,你需要在代码文件中使用
import语句导入它,才能像示例中那样使用JsonBigInt.parse方法。
- 你需要通过HarmonyOS项目对应的包管理器(如
因此,示例代码中JsonBigInt的功能完全依赖于你主动安装并导入的json-bigint这个第三方库,HarmonyOS Next本身不提供同名内置对象。

