gpt4 book ai didi

javascript - 让 JSON 对象在 NodeJS 中工作的问题

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:55 26 4
gpt4 key购买 nike

我正在尝试获取一个 JSON 对象,因此为了确保我拥有它,我编写了如下代码:

var payload = JSON.parse(
JSON.stringify(Buffer.from(pubsubMessage.data, 'base64').toString())
);

console.log(payload);
// { timestamp: '1533564208', device_id: '2nd_test', temperature: '20.0' }
console.log(typeof payload);
// string

编辑 - 根据您的反馈,我将进一步详细说明代码和类型。以下是完整代码及其返回内容:

var payload = Buffer.from(pubsubMessage.data, 'base64').toString();
console.log('payload 0');
console.log(payload);
// { timestamp: "1533564208", device_id: "2nd_test", temperature: "20.0" }
console.log(typeof payload);
//string
var payload2 = JSON.parse(
Buffer.from(pubsubMessage.data, 'base64').toString()
);
console.log('payload 2');
console.log(payload2);
// SyntaxError: Unexpected token t in JSON at position 2 at JSON.parse

编辑 2 - 为了更好地理解上下文,我将 GCloud 中的函数与 PubSub 触发器结合使用。所以缓冲区中的数据来自pubsub。

我不明白为什么 JSON.parse 函数会崩溃,尽管它显然是字符串中的 JSON 格式。

这方面有什么线索吗?

谢谢!

最佳答案

这个问题有点令人困惑。在代码中硬编码的以下两个版本会给我相同的结果并且工作正常。

payload= { timestamp: "1533564208", device_id: "2nd_test", temperature: "20.0" } 

payload='{"timestamp":"1533564208","device_id":"2nd_test","temperature":"20.0"}'

但是在使用 PubSub Gcloud 和 Buffer 函数时,我必须确保传入

payload='{"timestamp":"1533564208","device_id":"2nd_test","temperature":"20.0"}' 

而不是

payload= { timestamp: "1533564208", device_id: "2nd_test", temperature: "20.0" } 

否则它不会将其视为有效的 JSON。

关于javascript - 让 JSON 对象在 NodeJS 中工作的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51953504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com