Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 8541|Jawab: 1

[JavaScript] JS front-end memecahkan masalah hilangnya akurasi serialisasi JSON

[Salin tautan]
Diposting pada 13/02/2022 14.37.43 | | | |
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, silakanJawab

(Akhir)




Mantan:[Pertempuran aktual]. NET/C# mengekspor cache menggunakan kueri fuzzy StackExchange.Redis
Depan:[Praktek] Java tidak dapat menangkap pengecualian kustom menggunakan refleksi hutool
Diposting pada 13/02/2022 16.28.40 |
Datang untuk belajar lagi...
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com