Persyaratan: Saya membuat halaman penguraian online untuk jwt, ketika konten jwt memiliki jenis yang panjang, menggunakan metode JSON default untuk mengurai akan menyebabkan hilangnya akurasi, seperti yang ditunjukkan pada gambar di bawah ini:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiaXRzdnNlLmNvbSIsImlkIjo4OTA2MTM1NDg4MDEwNzc5Mjg1fQ.7tJHcSfbpZkgqw0ALGSRxyqkz2-UxZPhO_12TuKNZus
JavaScript hanya memiliki satu jenis angka: Angka, Angka adalah bilangan floating-point presisi ganda, dan tidak seperti banyak bahasa pemrograman lainnya, JavaScript tidak mendefinisikan jenis angka yang berbeda, seperti bilangan bulat, pendek, panjang, floating-point, dll. Oleh karena itu, dalam JavaScript, angka tidak dibagi menjadi jenis bilangan bulat dan tipe floating-point, dan semua angka adalah tipe floating-point.
Saat menyatakan bilangan bulat, Bilangan dapat mewakili rentang bilangan bulat [−2 terhadap pangkat 53, 2 hingga pangkat 253]. Karena Number memiliki 8 byte dan 64 bit, termasuk 1 bit tanda, 11 bit eksponensial, dan 52 digit mantissa.
Anda dapat menggunakan Number.MAX_SAFE_INTEGER dan Number.MIN_SAFE_INTEGER untuk melihat bilangan bulat keamanan maksimum dan minimum。
Ketika antarmuka backend mengembalikan bidang jenis long, frontend menggunakan JSON.parse(text) untuk mendeserialisasi tampilan, yang akan menyebabkan kesalahan tampilan, dan solusinya adalah antarmuka backend mengonversi bidang jenis long menjadi jenis string dan mengembalikannya.
lossless-json, mengurai JSON tanpa risiko kehilangan informasi numerik. Alamat GitHub:Login hyperlink terlihat.
Pertama-tamaMengkloning proyek lossless-jsonuntuk membangun perpustakaan yang dibundel dan diperkecil (ES5, PC perlu menginstal node.js), dan pertama-tama menginstal dependensi:
Kemudian kompilasi sebagai berikut:
./dist/lossless-json.js Ini akan menghasilkan paket kompatibilitas ES5 yang dapat dijalankan di browser dan node.js.
Diuji melalui konsol browser sebagai berikut:
Ubah kode proyek,Perkenalkan file lossless-json.js, memanggil LosslessJSON untuk serialisasi dan deserialisasi JSON,Memperbaiki masalah kehilangan akurasi, seperti yang ditunjukkan pada gambar di bawah ini:
let json = LosslessJSON.parse('{"foo":"bar"}'); {foo: 'bar'} let text = LosslessJSON.stringify(json); '{"foo":"bar"}'
Alamat pengujian:Login hyperlink terlihat.
Terakhir, lampirkan file lossless-json.js yang dikompilasi:
Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakan Jawab (Akhir) |