child_process 子进程返回的是数组套对象数据,child.stdout.on('data')打印是buffer数据怎么处理数据
时间: 2024-02-16 11:00:40 浏览: 25
如果子进程返回的数据是 buffer 类型,那么可以使用 buffer 的 `toString()` 方法将其转换为字符串,然后再进行处理。假设子进程返回的数据是一个包含多个对象的数组,可以使用以下代码来处理数据:
```javascript
let dataBuffer = Buffer.from(''); // 定义一个空 buffer
child.stdout.on('data', (data) => {
dataBuffer = Buffer.concat([dataBuffer, data]); // 将每个 data 事件的数据拼接到 buffer 中
});
child.stdout.on('end', () => {
const dataArray = JSON.parse(dataBuffer.toString()); // 将 buffer 转换为字符串,并解析为数组
console.log(dataArray); // 处理数组数据
});
```
在这个例子中,我们使用 `Buffer.from('')` 方法定义了一个空的 buffer,用于缓存数据。在每个 `data` 事件的回调函数中,我们使用 `Buffer.concat()` 方法将事件数据拼接到 buffer 中。最后,在 `end` 事件的回调函数中,我们将 buffer 转换为字符串,并使用 `JSON.parse()` 方法将其解析为数组,并对数组数据进行处理。
需要注意的是,在使用 `Buffer.concat()` 方法时,需要将新的数据 buffer 和原有的数据 buffer 进行拼接。同时,在将 buffer 转换为字符串时,需要指定正确的字符编码,例如 `dataBuffer.toString('utf8')`。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)