You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Cloud Function报BigInt无法编码错 对接Square API如何转BigInt为字符串

问题解决方法

报错原因:原生JSON.stringify不支持序列化BigInt类型的值,碰到带n后缀的Bigint值就会抛出编码错误。

最简全局方案

直接在Firebase Cloud Function的入口代码最顶部添加以下代码,全局覆盖BigInt的序列化规则,一劳永逸解决所有BigInt序列化问题:

BigInt.prototype.toJSON = function () {
  // 也可以根据业务需求选择转成Number(仅当值不超过Number安全整数范围时用)
  return this.toString()
}

添加后无需修改其他业务代码,后续所有JSON序列化操作都会自动把BigInt转成字符串格式。

无全局污染方案

如果不希望修改原型造成全局影响,可以在每次序列化返回数据时,给JSON.stringify传入自定义替换规则:

// 处理Square API返回的响应数据
const processedData = JSON.stringify(squareResponse, (key, value) => {
  return typeof value === 'bigint' ? value.toString() : value
})

直接把处理后的processedData作为接口返回值即可。

常见补充说明

  • 若后续需要把字符串格式的数值转回BigInt,直接调用BigInt(字符串变量)即可,不会丢失精度
  • 涉及金额类的BigInt字段不建议转普通Number,超出2^53-1范围的数值会丢失精度

内容的提问来源于stack exchange,提问作者Emmett Deen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:07