如何将Nodejs里的buffer变为JSON文件格式和UT

lxf2023-03-08 12:36:01

如何将Nodejs里的buffer变为JSON文件格式和UTF-8字符串数组?下边本文给大家介绍一下Nodejs中buffer和JSON文件格式彼此转化的方式,及其Buffer 转换成 UTF-8 字符串数组的办法。

如何将Nodejs里的buffer变为JSON文件格式和UT

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('utf8')) // 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('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

Buffer 案例被载入 StringDecoder 案例时,会用内部缓冲区域来保证编解码后字符串数组不包括一切不完美的多字节数标识符。 这都储存在缓冲区域中,直至下一次启用 stringDecoder.write() 或启用 stringDecoder.end()

大量程序编写基本知识,请访问:编程视频!!

以上就是关于如何将Nodejs里的buffer变为JSON文件格式和UTF-8字符串数组?的具体内容,大量欢迎关注AdminJS其他类似文章!