我有一个简单的请求,但似乎比预期的要难。我必须从JSON流中解析bigint。值是990000000069396215。在我的代码中,这个值在TypeScript中声明如下:id_address: bigint。但这不起作用,值被截断,并返回与9900000000693962100类似的值
bigint
990000000069396215
id_address: bigint
9900000000693962100
如何在代码中简单地管理这个bigint?
iq0todco1#
如果你想让它可靠和干净,那么总是把bigint值作为对象进行字符串化/解析:
function replacer( key: string, value: any ): any { if ( typeof value === 'bigint' ) { return { '__bigintval__': value.toString() }; } return value; } function reviver( key: string, value: any ): any { if ( value != null && typeof value === 'object' && '__bigintval__' in value ) { return BigInt( value[ '__bigintval__' ] ); } return value; } JSON.stringify( obj, replacer ); JSON.parse( str, reviver );
hpxqektj2#
我想你需要做这样的事,
export interface Address { id_address: string; }
然后在你的代码中实现这个接口的地方你需要做的是,
const value = BigInt(id_address); // I am guessing that inside your class you have spread your props and you can access id_address. So inside value you will get your Big integer value.
Reference用于BigInt。
wj8zmpe13#
你可以试试我的库,它可以解决这个问题:https://www.npmjs.com/package/json-with-bigint示例:
import { JSONParse, JSONStringify } from 'json-with-bigint'; const userData = { someBigNumber: 9007199254740991n }; localStorage.setItem('userData', JSONStringify(userData)); const restoredUserData = JSONParse(localStorage.getItem('userData'));
它支持往返操作,因此您可以安全地对BigInt值进行字符串化和解析,而不会丢失任何内容。它的工作原理与原生JSON.parse/JSON.stringify相同,可以处理所有非BigInt的内容。
3条答案
按热度按时间iq0todco1#
如果你想让它可靠和干净,那么总是把bigint值作为对象进行字符串化/解析:
hpxqektj2#
我想你需要做这样的事,
然后在你的代码中实现这个接口的地方你需要做的是,
Reference用于BigInt。
wj8zmpe13#
你可以试试我的库,它可以解决这个问题:https://www.npmjs.com/package/json-with-bigint
示例:
它支持往返操作,因此您可以安全地对BigInt值进行字符串化和解析,而不会丢失任何内容。
它的工作原理与原生JSON.parse/JSON.stringify相同,可以处理所有非BigInt的内容。