首頁  >  文章  >  web前端  >  怎麼將Nodejs中的buffer轉為JSON格式和UTF-8字串?

怎麼將Nodejs中的buffer轉為JSON格式和UTF-8字串?

青灯夜游
青灯夜游轉載
2021-08-26 10:25:075615瀏覽

怎麼將Nodejs中的buffer轉為JSON格式和UTF-8字串?以下本篇文章為大家介紹Nodejs中buffer和JSON格式相互轉換的方法,以及Buffer 轉換為 UTF-8 字串的方法。

怎麼將Nodejs中的buffer轉為JSON格式和UTF-8字串?

Node.js 和基於瀏覽器的JavaScript 有所不同,因為Node 甚至在ES6 草稿提出ArrayBuffer 之前就有處理二進位資料的方法。在 Node 中,Buffer(緩衝區) 類別是大多數 I/O 操作使用的主要資料結構。它是在 V8 堆外部分配的原始二進位數據,一旦分配,就無法調整大小。 【推薦學習:《nodejs 教程》】

在Node v6.0 之前,要建立新的緩衝區,我們只需使用new 關鍵字呼叫構造函數:

let newBuff = new Buffer('I Love You')

v6.0 之後,要建立新的緩衝區實例:

let newBuff = Buffer.from('I Love You')

new Buffer() 建構子已被棄用,並被單獨的Buffer.from()Buffer.alloc()Buffer.allocUnsafe() 方法替換。

更多資訊可以閱讀官方文件#。

將 Buffer 轉換為 JSON

緩衝區可以轉換為 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 指定要轉換的物件的類型是 Buffer 及其資料。

將JSON 轉換為Buffer

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>

#將Buffer 轉換為UTF-8 字串

console.log(bufferOriginal.toString(&#39;utf8&#39;)) // All work and no play makes Jack a dull boy

#. toString() 不是將緩衝區轉換為字串的唯一方法。此外,預設情況下,它會轉換為 utf-8 格式字串。

另一種將緩衝區轉換為字串的方法是使用 Node.js API 中的 StringDecoder 核心模組。

string_decoder 模組提供了用於將Buffer 物件解碼為字串(以保留編碼的多位元組UTF-8 和UTF -16 字元的方式)的API。上述例子的替代寫法如下:

const { StringDecoder } = require(&#39;string_decoder&#39;)
const decoder = new StringDecoder(&#39;utf8&#39;)

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

Buffer 實例被寫入StringDecoder 實例時,會使用內部的緩衝區來確保解碼後的字串不包含任何不完整的多位元組字元。這些都保存在緩衝區中,直到下一次呼叫 stringDecoder.write() 或呼叫 stringDecoder.end()

更多程式相關知識,請造訪:程式設計影片! !

以上是怎麼將Nodejs中的buffer轉為JSON格式和UTF-8字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除