【问题标题】:Converting the Buffer to readable JSON format in Node.js在 Node.js 中将 Buffer 转换为可读的 JSON 格式
【发布时间】:2021-10-08 13:17:25
【问题描述】:

我有一个从 SendGrid Inbound Parse webhook 获取的缓冲区文本。

入站解析 Webhook 处理域或子域的所有传入电子邮件,解析内容和附件,然后将 multipart/form-data 发布到您选择的 URL。

发布的内容是缓冲格式,如下所示

<Buffer 2d 2d 78 64 6b 69 ... >

现在我需要将其转换为可读的 JSON 格式。 当我尝试将此缓冲区转换为 JSON 时,我得到了这样的结果。

var json = JSON.parse(buf);

{ type: 'Buffer', data: [ 97, 98, 99 ] }

我需要像下面的例子那样内容。那是actula格式。

当我尝试将缓冲区转换为字符串格式时,我得到了我需要的结果。但是,那是整个字符串格式。我需要 JSON 格式的。因为我需要一些响应参数,例如“From”、“To”信息。有没有办法将缓冲区转换为可读的 JSON 格式。

缓冲区 -> 字符串 -> JSON

请您帮我将 Buffer 对象转换为可读的 JSON 对象。

【问题讨论】:

    标签: node.js json parsing google-cloud-functions busboy


    【解决方案1】:

    您可以使用 Busboy 在 Node.js 中将缓冲区文本转换为 JSON 格式。下面是一个如何做到这一点的例子。您可以获取每个字段和值。

    const Busboy = require("busboy");
    
    exports.hello2 = functions.https.onRequest((req,res)=>{
        
            res.header("Access-Control-Allow-Origin","*");
            res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept");
        
            const busboy = new Busboy({ headers: req.headers })
            let Data = {}
        
            console.log("Body",req.body);
            console.log("rawBody",req.rawBody);
        
            busboy.on("field", (field, val, fieldnameTruncated, valTruncated, encoding, mimetype) => {
                console.log(`FieldName ${field}: ${val}.`)
                Data[field] = val;
            })
        
            busboy.on('finish', () => {
        
                console.log("Data",Data);
        
                console.log("From",Data.from);
                console.log("SPF",Data.SPF);
                console.log("To",Data.to);
                console.log("Subject",Data.subject);
        
                res.status(200).send(Data);
        
            });
        
            busboy.end(req.body)
        
    });
    

    【讨论】:

      【解决方案2】:

      你可以试试这个

       const message = Buffer.from(payload, 'base64').toString('utf-8');
       let parsedMessage = JSON.parse(message);
       console.log(parsedMessage);
      
      

      【讨论】:

      • 这里的有效载荷是什么@Basil Ndonga
      • 有效负载是分配给传入缓冲区的变量
      猜你喜欢
      • 2023-03-21
      • 2017-06-16
      • 2017-02-26
      • 2017-03-12
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多