热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎么将Nodejs中的buffer转为JSON格式和UTF

今天PHP爱好者给大家带来怎么将Nodejs中的buffer转为JSON格式和UTF-8字符串的方法,下面本篇文章给大家介绍一下Nodejs中buffer和JSON格式相互转换的方


今天PHP爱好者给大家带来怎么将Nodejs中的buffer转为JSON格式和UTF-8字符串的方法,下面本篇文章给大家介绍一下Nodejs中buffer和JSON格式相互转换的方法,以及Buffer 转换为 UTF-8 字符串的方法。希望对大家有所帮助。

Node.js 和基于浏览器的 Javascript 有所不同,因为 Node 甚至在 ES6 草案提出 ArrayBuffer 之前就有处理二进制数据的方法。在 Node 中,Buffer(缓冲区) 类是大多数 I/O 操作使用的主要数据结构。它是在 V8 堆外部分配的原始二进制数据,一旦分配,就无法调整大小。

在 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)

//

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 转换为 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字符串?的详细内容,更多请关注php爱好者其它相关文章!



推荐阅读
author-avatar
国际物流-Ann
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有