Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 8278|Vastaus: 1

[JavaScript] Front-end JS ratkaisee JSON-sarjallistamisen tarkkuuden heikkenemisen ongelman

[Kopioi linkki]
Julkaistu 13.2.2022 14.37.43 | | | |
Vaatimukset: Tein verkkopohjaisen jäsennyssivun jwt:lle, kun jwt-sisällöllä on pitkä tyyppi, oletus-JSON-menetelmän käyttäminen jäsentämiseen aiheuttaa tarkkuuden heikkenemisen, kuten alla olevassa kuvassa näkyy:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScriptissä on vain yksi lukutyyppi: Luku, Luku on kaksinkertaisen tarkkuuden liukulukuluku, ja toisin kuin monet muut ohjelmointikielet, JavaScript ei määrittele erilaisia lukutyyppejä, kuten kokonaislukuja, lyhyitä, pitkiä, liukulukuja jne. Siksi JavaScriptissä lukuja ei jaeta kokonaislukutyyppeihin ja liukulukutyyppeihin, vaan kaikki luvut ovat liukulukutyyppejä.

Kun ilmaistaan kokonaisluku, luku voi edustaa kokonaislukuväliä [−2 potenssiin 53, 2 potenssiin 253]. Koska numerossa on 8 tavua ja 64 bittiä, mukaan lukien 1 merkkibitti, 11 eksponentiaalista bittiä ja 52 mantissan numeroa.

Voit käyttää Number.MAX_SAFE_INTEGER ja Number.MIN_SAFE_INTEGER nähdäksesi maksimi- ja minimiturvallisuuskokonaisluvut

Kun backend-rajapinta palauttaa pitkän tyypin kentän, frontend käyttää JSON.parse(text)-tiedostoa näytön deserialisointiin, mikä aiheuttaa näyttövirheen, ja ratkaisu on, että backend-rajapinta muuntaa pitkän kentän merkkijonotyypiksi ja palauttaa sen.

lossless-json-projekti, joka jäsentää JSON:ia ilman riskiä numeerisen tiedon menetyksestä. GitHub-osoite:Hyperlinkin kirjautuminen on näkyvissä.

Ennen kaikkeaKloona lossless-json-projektirakentaa niputettu ja minifoitu kirjasto (ES5, PC:n täytyy asentaa node.js) ja ensin asentaa riippuvuudet:

Sitten käännä seuraavasti:



./dist/lossless-json.js Tämä luo ES5-yhteensopivuuspaketin, joka voidaan suorittaa selaimessa ja node.js.

Testattu selaimen konsolilla seuraavasti:



Muokkaa projektin koodia,Esittele lossless-json.js tiedostot, kutsuen LosslessJSONia JSON-sarjalistaukseen ja purkamiseen,Korjasin tarkkuuden menetyksen ongelman, kuten alla olevassa kuvassa näkyy:

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



Testiosoite:Hyperlinkin kirjautuminen on näkyvissä.

Lopuksi liitä käännetty lossless-json.js-tiedosto:
Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyväVastaus

(Loppu)




Edellinen:[Varsinaista taistelua]. NET/C# vie välimuistin käyttämällä StackExchange.Redis fuzzy queryä
Seuraava:[Harjoitella] Java ei pysty havaitsemaan mukautettuja poikkeuksia hutool-heijastuksella
Julkaistu 13.2.2022 16.28.40 |
Tulin oppimaan uudelleen...
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com