【发布时间】:2020-04-19 07:04:51
【问题描述】:
我正在使用 Mosca 构建一个 MQTT 服务器,并尝试将 MQTT 消息解析为 JSON 以用于数据库存储。
下方“已发布”回调中的代码
server.on('published', (packet, client) => {
let { payload } = packet;
if(payload) {
let payloadString = payload.toString();
let payloadJson = JSON.parse(payloadString);
console.log(payloadJson)
}
});
JSON 字符串示例为:
{"_id":"5e928105156c40000006f9e9","温度":33,"湿度":64.9}
但我在JSON.parse 行收到错误
SyntaxError: JSON 中第 2 位的意外标记 c
我应该如何正确解析此消息?
【问题讨论】:
-
你能记录下payloadString的实际值并将其添加到问题中吗?
-
嗨@JoachimIsaksson,解析前的日志是
{"_id":"5e928105156c40000006f9e9","temperature":33,"humidity":64.9}上面的JSON String的样本 -
您在什么平台上运行,使用的默认编码是什么?因为该有效负载缓冲区既可以正确解析为字符串,也可以直接从带有 UTF8 的缓冲区中解析
-
嗨@hardillb,我正在使用 Arduino 和 ArduinoJson 6 发送消息。我不确定默认编码,但它可能是 UTF8。我有 2 个地方收到消息,分别是代理服务器(Node JS)和移动应用程序(React Native)。我可以解析 React Naitve 上的消息(都在 javascript 中使用 JSON.parse()),但无法在 Node js 中解析
-
问题是nodejs代码在哪里运行