Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript:在JSON中序列化BigInt_Json_Typescript_Global_Bigint - Fatal编程技术网

TypeScript:在JSON中序列化BigInt

TypeScript:在JSON中序列化BigInt,json,typescript,global,bigint,Json,Typescript,Global,Bigint,我正在寻找一种方法来强制JSON.stringify总是毫无怨言地打印BigInts 我知道这是非标准的,我知道有一个纯JavaScript的包;但它不符合我的需要。我甚至知道通过设置BigInt.prototype.toJSON可以修复原始JavaScript。我需要的是在我的TypeScript代码中全局覆盖正常的JSON.stringify函数 大约一年前,我发现了以下代码: 声明全局 { 接口BigIntConstructor { toJSON:()=>BigInt; } } BigIn

我正在寻找一种方法来强制
JSON.stringify
总是毫无怨言地打印
BigInt
s

我知道这是非标准的,我知道有一个纯JavaScript的包;但它不符合我的需要。我甚至知道通过设置
BigInt.prototype.toJSON
可以修复原始JavaScript。我需要的是在我的TypeScript代码中全局覆盖正常的
JSON.stringify
函数

大约一年前,我发现了以下代码:

声明全局
{
接口BigIntConstructor
{
toJSON:()=>BigInt;
}
}
BigInt.toJSON=function(){返回this.toString();};
在某个网页上,我再也找不到了。它曾经在我的另一个项目中起作用,但似乎不再起作用了。我不知道为什么

不管我对上面的行做了什么,如果我试图打印一个包含BigInt的JSON,我会得到:
TypeError:不知道如何序列化BigInt


非常感谢您提供的任何帮助。非常感谢。

您可以将
replacer
参数用于
JSON。stringify
如下:

const obj = {
  foo: 'abc',
  bar: 781,
  qux: 9n
}

JSON.stringify(obj, (_, v) => typeof v === 'bigint' ? v.toString() : v)

您可以像这样使用
JSON.stringify
replacer
参数:

const obj = {
  foo: 'abc',
  bar: 781,
  qux: 9n
}

JSON.stringify(obj, (_, v) => typeof v === 'bigint' ? v.toString() : v)

当我发现那个代码片段时,我问自己同样的问题。那时候它不起作用;它现在不起作用了(这是我作为一个精神检查测试的东西之一…)。这个代码片段仍然让我感到困惑。顺便说一句,我做了更多的实验,我认为它不再起作用的原因可能与我的
tsconfig.json
有关;但我不确定我需要做什么才能让它再次工作;如果它甚至与我当前的“目标”需求兼容。不应该
toJSON:()=>BigInt
be
toJSON:(num:BigInt)=>string
?当我发现那个代码片段时,我问了自己同样的问题。那时候它不起作用;它现在不起作用了(这是我作为一个精神检查测试的东西之一…)。这个代码片段仍然让我感到困惑。顺便说一句,我做了更多的实验,我认为它不再起作用的原因可能与我的
tsconfig.json
有关;但我不确定我需要做什么才能让它再次工作;如果它能满足我目前的“目标”需求。有点罗嗦,但我喜欢它:它能完成任务;谢谢!!有点罗嗦,但我喜欢它:它完成了任务;谢谢!!