javascript - Hur man analyserar JSON-data (typ: BigInt) i TypeScript


Jag har en enkel förfrågan men det verkar vara svårare än förväntat. Jag måste analysera ett bigint från en JSON-ström. Värdet är 990000000069396215. I min kod deklareras detta värde i TypeScript på detta sätt: id_address: bigint. Men detta fungerar inte, värdet trunkeras och returnerar inget korrekt, till exempel 9900000000693962100

Hur kan jag enkelt hantera detta bigint i min kod?

Svar #1

Om du vill göra det pålitligt och rent, strängifiera/parsa alltid bigint-värden som objekt:

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

Svar #2

Jag antar att du behöver göra något sådant här,

export interface Address {
id_address: string;
}

Då någonstans i din kod där du implementerar detta gränssnitt behöver du göra,

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.

Referens för BigInt.

Relaterade artiklar