Tengo algunos números en json que desbordan el tipo Número, así que quiero que sea bigint, pero ¿cómo?
{"foo":[[0],[64],[89],[97]],"bar":[[2323866757078990912,144636906343245838,441695983932742154,163402272522524744],[2477006750808014916,78818525534420994],[18577623609266200],[9008333127155712]]}Si tiene alguna condición para identificar exactamente qué números deben tratarse como BigInt (por ejemplo, es un número mayor que 1e10 ), puede utilizar el segundo parámetro de JSON.parse ( reviver ):
const input = `{"foo":[[0],[64],[89],[97]],"bar":[[2323866757078990912,144636906343245838,441695983932742154,163402272522524744],[2477006750808014916,78818525534420994],[18577623609266200],[9008333127155712]]}`, output = JSON.parse( input, (_, value) => typeof value === 'number' && value > 1e10 ? BigInt(value) : value ) console.log(typeof output.bar[0][0])Puede usar un callbck en JSON.parse para hacer algo con los números.
Un valor BigInt , a veces también llamado simplemente BigInt, es un primitivo bigint, creado agregando n al final de un literal entero, o llamando al constructor BigInt() (pero sin el operador new) y dándole un valor entero o valor de cadena.
const json = '{"foo":[[0],[64],[89],[97]],"bar":[[2323866757078990912,144636906343245838,441695983932742154,163402272522524744],[2477006750808014916,78818525534420994],[18577623609266200],[9008333127155712]]}' const data = JSON.parse(json, (_, v) => typeof v == "number" ? BigInt(v) : v ); console.log(typeof data.foo[0][0])