Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 8278|Yanıt: 1

[JavaScript] Ön uç JS, JSON serileştirme doğruluğunun kaybı sorununu çözer

[Bağlantıyı kopyala]
Yayınlandı 13.02.2022 14:37:43 | | | |
Gereksinimler: jwt için çevrimiçi bir ayrıştırma sayfası oluşturdum; jwt içeriği uzun bir tipe sahipse, varsayılan JSON yöntemiyle ayrıştırmak doğruluk kaybına yol açar, aşağıdaki şekilde gösterildiği gibi:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus



JavaScript'in yalnızca bir sayı türü vardır: Sayı, Sayı, çift hassasiyetli bir kayan nokta sayısıdır ve birçok diğer programlama dilinin aksine, JavaScript tam sayı, kısa, uzun, kayan nokta gibi farklı sayı türlerini tanımlamaz. Bu nedenle, JavaScript'te sayılar tam sayı tiplerine ve kayan nokta tiplerine ayrılmaz ve tüm sayılar kayan nokta tipleridir.

Bir tam sayı ifade edilirken, Sayı [−2'den 53'ün kuvvetine, 2'den 253'ün kuvvetine] tam sayı aralığını temsil edebilir. Çünkü Number 8 bayt ve 64 bitten oluşur; bunlar arasında 1 işaret biti, 11 üstel bit ve 52 mantissa hanesi bulunur.

Number.MAX_SAFE_INTEGER ve Number.MIN_SAFE_INTEGER kullanarak maksimum ve minimum güvenlik tam tamlarını görebilirsiniz

Arka uç arayüzü uzun bir alan döndürdüğünde, ön uç JSON.parse(text) kullanarak ekranı serilikten çıkarmamıştır; bu da görüntüleme hatasına yol açar ve çözüm, arka uç arayüzünün uzun türdeki alanı string tipine dönüştürüp geri döndürmesidir.

kayıpsız-json projesi, sayısal bilgiyi kaybetme riski olmadan JSON'u ayrıştırıyor. GitHub adresi:Bağlantı girişi görünür.

Her şeyden önceKayıpsız-json projesini klonlapaketlenmiş ve küçültülmüş bir kütüphane oluşturmak (ES5, PC'nin node.js kurması gerekir) ve önce bağımlılıkları kurmak:

Sonra aşağıdaki gibi derleyin:



./dist/lossless-json.js Bu, tarayıcıda çalıştırılabilen bir ES5 uyumluluk paketi oluşturacak ve node.js.

Tarayıcı konsolu üzerinden şu şekilde test edildi:



Proje kodunu değiştirin,lossless-json.js dosyalarını tanıtın, JSON serileştirme ve serilikten çıkarma için LosslessJSON'u çağırıyor,Doğruluk kaybı sorunu düzeltildi, aşağıdaki şekilde gösterildiği gibi:

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



Test adresi:Bağlantı girişi görünür.

Son olarak, derlenmiş lossless-json.js dosyasını ekleyin:
Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfenYanıt

(Son)




Önceki:[Gerçek dövüş]. NET/C#, önbelleği StackExchange ile dışa aktarır. Bulanık sorgu
Önümüzdeki:[Uygulama] Java, hutool yansıtma kullanarak özel istisnaları yakalayamaz
Yayınlandı 13.02.2022 16:28:40 |
Tekrar öğrenmeye geldim...
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com