在 MQTT Server(Broker)端,通常不需要專門安裝 JSON 庫或工具,因為 MQTT Broker(例如 Mosquitto、EMQX 等)本質上只是用來轉發消息的,它並不關心消息的內容格式。因此,無論消息是 JSON、XML 還是純文本,只要是有效的字符串,它都可以正常傳遞。
MQTT Broker(伺服器端):
不需要特別安裝 JSON 支援工具。
Broker 只負責接收和分發消息,並不解析消息內容。
MQTT Client(客戶端):
客戶端需要能夠處理 JSON 格式的消息,例如解析或生成 JSON 數據。
如果你的客戶端是用 Python 編寫的,則需要 json 模組(Python 內建)。
如果你的客戶端是用其他語言(例如 JavaScript、C++ 等)編寫,則需要相應的 JSON 解析庫。
1. Python 客戶端
Python 內建 json 模組,不需要額外安裝。
範例代碼:
import json
# 將字典轉換為 JSON 字符串
data = {"temperature": 22, "humidity": 60}
json_data = json.dumps(data)
# 將 JSON 字符串轉換為字典
parsed_data = json.loads(json_data)
print(parsed_data['temperature']) # 輸出 22
2. JavaScript 客戶端(Node.js)
Node.js 也有內建的 JSON 支援,不需要額外安裝。
範例代碼:
javascript
複製程式碼
// 將對象轉換為 JSON 字符串
const data = { temperature: 22, humidity: 60 };
const jsonData = JSON.stringify(data);
// 將 JSON 字符串轉換為對象
const parsedData = JSON.parse(jsonData);
console.log(parsedData.temperature); // 輸出 22
3. C/C++ 客戶端
需要使用第三方 JSON 庫,例如 cJSON。
安裝 cJSON 並使用它來解析 JSON:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
int main() {
// JSON 字符串
const char *json_string = "{\"temperature\": 22, \"humidity\": 60}";
// 解析 JSON 字符串
cJSON *json = cJSON_Parse(json_string);
if (json == NULL) {
printf("JSON 解析錯誤!\n");
return 1;
}
// 讀取 JSON 數據
int temperature = cJSON_GetObjectItem(json, "temperature")->valueint;
int humidity = cJSON_GetObjectItem(json, "humidity")->valueint;
printf("Temperature: %d, Humidity: %d\n", temperature, humidity);
// 釋放內存
cJSON_Delete(json);
return 0;
}
在 MQTT Broker 端:無需安裝 JSON 庫。Broker 只負責傳輸消息,不處理消息內容。
在 MQTT Client 端:需要根據使用的編程語言安裝相應的 JSON 解析庫,以解析或生成 JSON 格式的數據。
如果你在伺服器端還需要做一些與 JSON 相關的數據處理(例如記錄、分析等),那麼就需要在伺服器上安裝對應的 JSON 工具或庫。