簡體   English   中英

無法從 Broker 中的 MQTT 消息解析 JSON

[英]Can not parse JSON from MQTT Message in Broker

我正在使用 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行收到錯誤

語法錯誤:position 2 中的 JSON 中的意外令牌 c

我應該如何正確解析此消息?

您的項目似乎正在使用 MongoDB。

我不知道server.emit()端的代碼是什么,因為您沒有提供它。

但是在從 MongoDB 獲取數據之前嘗試傳入.lean()將解決您的問題。

像這樣的東西:

const leanDoc = await MyModel.findOne().lean();

也檢查一下: https://mongoosejs.com/docs/tutorials/lean.html

這可能有助於將來的某些人將代碼更新為

server.on('published', (packet, client) => {
    let { payload } = packet;
    if(payload) {
        let payloadString = payload.toString();
        try {
            let payloadJson =  JSON.parse(payloadString)
            console.log(payloadJson)
        } catch (error) {
            console.log("Invalid json data")
        }
    }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM