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