Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8? Artikel berikut akan memperkenalkan kepada anda kaedah menukar format penimbal dan JSON dalam Nodejs, serta kaedah menukar Penimbal kepada rentetan UTF-8.
Node.js berbeza daripada JavaScript berasaskan pelayar kerana Node mempunyai cara untuk mengendalikan data binari walaupun sebelum draf ES6 ArrayBuffer
dicadangkan. Dalam Node, kelas Buffer
(buffer) ialah struktur data utama yang digunakan oleh kebanyakan operasi I/O. Ia ialah data binari mentah yang diperuntukkan di luar timbunan V8 dan tidak boleh diubah saiznya setelah diperuntukkan. [Pembelajaran yang disyorkan: "tutorial nodejs"]
Sebelum Node v6.0, untuk mencipta penimbal baharu, kita hanya perlu menggunakan kata kunci new
untuk memanggil pembina:
let newBuff = new Buffer('I Love You')
Selepas v6.0, untuk mencipta contoh penimbal baharu:
let newBuff = Buffer.from('I Love You')
new Buffer()
pembina telah ditamatkan dan digantikan dengan kaedah Buffer.from()
, Buffer.alloc()
dan Buffer.allocUnsafe()
berasingan penggantian.
Untuk maklumat lanjut, anda boleh membaca dokumentasi rasmi.
Penimbal boleh ditukar kepada JSON.
let bufferOne = Buffer.from('All work and no play makes Jack a dull boy') console.log(bufferOne) // <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79> let json = JSON.stringify(bufferOne, null, 2) console.log(json) /* { "type": "Buffer", "data": [ 65, 108, 108, 32, 119, 111, 114, 107, 32, 97, 110, 100, 32, 110, 111, 32, 112, 108, 97, 121, 32, 109, 97, 107, 101, 115, 32, 74, 97, 99, 107, 32, 97, 32, 100, 117, 108, 108, 32, 98, 111, 121 ] } */
JSON menentukan bahawa jenis objek yang hendak ditukar ialah Buffer
dan datanya.
let bufferOriginal = Buffer.from(JSON.parse(json).data) console.log(bufferOriginal) // <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79>
console.log(bufferOriginal.toString('utf8')) // All work and no play makes Jack a dull boy
.toString()
bukan satu-satunya cara untuk menukar penimbal kepada rentetan. Selain itu, secara lalai, ia ditukar kepada rentetan format utf-8.
Cara lain untuk menukar penimbal kepada rentetan ialah menggunakan StringDecoder
modul teras daripada API Node.js. Modul
string_decoder
menyediakan API untuk menyahkod Buffer
objek ke dalam rentetan dengan cara yang mengekalkan aksara UTF-8 dan UTF-16 berbilang bait yang dikodkan. Alternatif kepada contoh di atas ialah:
const { StringDecoder } = require('string_decoder') const decoder = new StringDecoder('utf8') let bufferOriginal = Buffer.from(JSON.parse(json).data) console.log(decoder.write(bufferOriginal)) // All work and no play makes Jack a dull boy console.log(decoder.end(bufferOriginal)) // All work and no play makes Jack a dull boy
Apabila tika Buffer
ditulis kepada tika StringDecoder
, penimbal dalaman digunakan untuk memastikan rentetan yang dinyahkod tidak mengandungi sebarang polinomial yang tidak lengkap . Ini disimpan dalam penimbal sehingga panggilan seterusnya ke stringDecoder.write()
atau kali seterusnya stringDecoder.end()
dipanggil.
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !
Atas ialah kandungan terperinci Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!