See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 8278|Vastuse: 1

[JavaScript] Front-end JS lahendab JSON-i seriaaliseerimise täpsuse kaotuse probleemi

[Kopeeri link]
Postitatud 13.02.2022 14:37:43 | | | |
Nõuded: Tegin jwt jaoks veebipõhise parsimislehe, kus kui jwt sisu tüüp on pikk, põhjustab vaikimisi JSON meetodi kasutamine analüüsimiseks täpsuse languse, nagu alloleval joonisel näidatud:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScriptil on ainult üks arvutüüp: Number, Number on topelttäpsusega ujukomaarv, ja erinevalt paljudest teistest programmeerimiskeeltest ei määra JavaScript erinevat tüüpi arve, nagu täisarvud, lühikesed, pikad, ujukomaarvud jne. Seetõttu ei jagata JavaScriptis numbreid täisarvudeks ja ujukomatüüpideks ning kõik arvud on ujukoma-tüübid.

Täisarvu väljendamisel võib arv esindada täisarvulist vahemikku [−2 kuni 53 astmeni, 2 astme 253 astmeni]. Sest Number sisaldab 8 baiti ja 64 bitti, sealhulgas 1 märgibitti, 11 eksponentsiaalbitti ja 52 mantissanumbrit.

Saad kasutada Number.MAX_SAFE_INTEGER ja Number.MIN_SAFE_INTEGER, et vaadata maksimaalseid ja minimaalseid ohutuse täisarvu.

Kui taustaliides tagastab välja tüübi pikkuseks, kasutab esiosa ekraani deserialiseerimiseks JSON.parse(text), mis põhjustab kuvavea, ning lahendus on see, et taustaliides teisendab tüübi pikkuse välja stringitüübiks ja tagastab selle.

lossless-json projekt, mis parseerib JSON-i ilma numbrilise info kaotamise riskita. GitHubi aadress:Hüperlingi sisselogimine on nähtav.

EsiteksKlooni lossless-json projektet luua komplekteeritud ja minimeeritud teek (ES5, arvuti peab node.js installima) ning esmalt paigaldada sõltuvused:

Seejärel kompileeri järgmiselt:



./dist/lossless-json.js See genereerib ES5 ühilduvuspaketi, mida saab käivitada brauseris ja node.js.

Testitud brauserikonsooli kaudu järgmiselt:



Muuda projekti koodi,Tutvusta lossless-json.js faile, kutsudes LosslessJSON-i JSON-i seriaaliseerimiseks ja deserialiseerimiseks,Parandatud täpsuse kaotuse probleem, nagu alloleval joonisel näidatud:

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



Testi aadress:Hüperlingi sisselogimine on nähtav.

Lõpuks lisa kompileeritud lossless-json.js fail:
Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse

(Lõpp)




Eelmine:[Päris lahing]. NET/C# ekspordib vahemälu StackExchange.Redis häguse päringuga
Järgmine:[Harjuta] Java ei suuda hutooli peegelduse abil kohandatud erandeid tabada
Postitatud 13.02.2022 16:28:40 |
Tulin uuesti õppima...
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com