我正在寻找一种方法来强制JSON.stringify
总是打印BigInt
s没有抱怨。
我知道它是非标准的,我知道在纯JavaScript中有一个包;但它不符合我的需要。我什至知道通过设置BigInt.prototype.toJSON
来修复原始JavaScript。我需要的是某种方法来在我的TypeScript代码中全局覆盖正常的JSON.stringify
函数。
我在一年前发现了下面的代码:
declare global
{
interface BigIntConstructor
{
toJSON:()=>BigInt;
}
}
BigInt.toJSON = function() { return this.toString(); };
在一些网页上,我不能设法再找到。它曾经在我的另一个项目中工作,但它似乎不再工作了。我不知道为什么。
无论我对上面的行做了什么,如果我试图打印一个包含BigInt的JSON,我会得到:TypeError: Do not know how to serialize a BigInt
.
任何帮助是赞赏-提前非常感谢。
3条答案
按热度按时间2izufjch1#
您可以像这样使用
replacer
参数作为JSON.stringify
:eit6fx6z2#
这就是你要找的:
https://github.com/GoogleChromeLabs/jsbi/issues/30#issuecomment-953187833
ddhy6vgd3#
我需要让JSON.stringify在其中一个依赖项中工作,所以我不能使用上面的答案。相反,我创建了一个patch.js文件:
然后在我的TypeScript源代码的开头,我添加了:
之后,JSON.stringify可以毫无问题地处理BigInts。