Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 8278|Svar: 1

[JavaScript] Front-end JS löser problemet med förlust av JSON-serialiseringsnoggrannhet

[Kopiera länk]
Publicerad på 2022-02-13 14:37:43 | | | |
Krav: Jag skapade en online-parsningssida för jwt, när jwt-innehållet har lång typ, kommer användning av standardmetoden JSON för tolkning att orsaka en förlust av noggrannhet, som visas i figuren nedan:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScript har bara en taltyp: Number, Number är ett dubbelprecisions flyttalstal, och till skillnad från många andra programmeringsspråk definierar JavaScript inte olika typer av tal, såsom heltal, kort, lång, flyttal med mera. Därför delas inte tal i JavaScript in i heltalstyper och flyttalstyper, och alla tal är flyttalstyper.

När ett heltal uttrycks kan Tal representera ett heltalsintervall av [−2 till potensen 53, 2 till potensen av 253]. Eftersom Number har 8 byte och 64 bitar, inklusive 1 teckenbit, 11 exponentiella bitar och 52 mantissa-siffror.

Du kan använda Number.MAX_SAFE_INTEGER och Number.MIN_SAFE_INTEGER för att se de maximala och minimala säkerhetsheltal

När backend-gränssnittet returnerar ett fält av typ long använder frontend JSON.parse(text) för att deserialisera displayen, vilket orsakar ett visningsfel, och lösningen är att backend-gränssnittet konverterar fältet av typ long till strängtyp och returnerar det.

lossless-json-projekt, som parsar JSON utan risk att förlora numerisk information. GitHub-adress:Inloggningen med hyperlänken är synlig.

Först av alltKlona lossless-json-projektetför att bygga ett medföljande och minifierat bibliotek (ES5, PC måste installera node.js), och först installera beroendena:

Kompilera sedan enligt följande:



./dist/lossless-json.js Detta genererar ett ES5-kompatibilitetspaket som kan köras i webbläsaren och node.js.

Testat via webbläsarkonsolen enligt följande:



Modifiera projektkoden,Introducera lossless-json.js filer, som anropar LosslessJSON för JSON-serialisering och deserialisering,Fixade problemet med förlust av noggrannhet, som visas i figuren nedan:

let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'}
let text = LosslessJSON.stringify(json);        '{"foo":"bar"}'



Testadress:Inloggningen med hyperlänken är synlig.

Slutligen, bifoga den kompilerade lossless-json.js-filen:
Turister, om ni vill se det dolda innehållet i detta inlägg, snällaSvar

(Slut)




Föregående:[Verklig strid]. NET/C# exporterar cachen med hjälp av StackExchange.Redis fuzzy query
Nästa:[Övning] Java kan inte fånga anpassade undantag med hutool-reflektion
Publicerad på 2022-02-13 16:28:40 |
Kom för att lära dig igen...
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com