Benjamin
Benjamin

Reputation: 103

How to parse a JSON data (type : BigInt) in TypeScript

I have a simple request but It seems to be harder than expected. I have to parse a bigint from a JSON stream. The value is 990000000069396215. In my code, this value is declared in TypeScript like this: id_address: bigint. But this is not working, the value is truncated, and return nothing like 9900000000693962100

enter image description here

How can I simply manage this bigint in my code?

Upvotes: 5

Views: 4786

Answers (2)

Riad Baghbanli
Riad Baghbanli

Reputation: 3319

If you want to make it reliable and clean then always stringify/parse bigint values as objects:

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 );

Upvotes: 3

Mohit
Mohit

Reputation: 522

I guess you need to do something like this,

export interface Address {
id_address: string;
}

Then somewhere in your code where you implement this interface you need to do,

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 for BigInt.

Upvotes: 0

Related Questions