如何在Node.js的Google Cloud Function中解析Cloud Pub/Sub JSON整数?
解析Cloud Pub/Sub JSON消息中的整数问题解决方法
嘿,我看你在解析Cloud Pub/Sub消息里的整数值时碰钉子了,咱们来捋清楚问题出在哪,然后搞定它!
你的代码问题所在
你现在的代码里,直接尝试访问pubsubMessage.temp是行不通的——因为Pub/Sub传递的消息数据是经过Base64编码的,而且原始内容是JSON字符串,你得先完成解码+JSON解析这两步,才能拿到里面的具体字段值。
修正后的完整代码
这里给你调整后的代码,每一步都加了注释说明:
exports.subscribe = (event, callback) => { const pubsubMessage = event.data; // 第一步:把Base64编码的消息数据解码成字符串 const messageStr = Buffer.from(pubsubMessage.data, 'base64').toString(); try { // 第二步:将字符串解析为JSON对象 const messageJson = JSON.parse(messageStr); // 第三步:现在就能正常访问里面的整数值了 const tempValue = messageJson.temp; console.log("解析到的temp整数:", tempValue); console.log("temp的类型:", typeof tempValue); // 应该显示number } catch (error) { // 处理JSON解析失败的情况(比如消息格式不对) console.error("解析JSON失败:", error); } callback(); };
额外提醒
- 确保你发布到Pub/Sub的消息确实是合法的JSON格式,而且包含
temp字段,不然解析的时候会报错。 - 如果你的消息里有其他整数字段,用同样的方式访问就行,
JSON.parse会自动把符合格式的数字转成JavaScript的number类型。
内容的提问来源于stack exchange,提问作者Ľubomír Skirka
相关产品推荐
相关产品推荐

