mosquitto 发送json 数据后没有“”“
时间: 2023-09-25 17:11:09 浏览: 64
如果你使用 mosquitto 发送 JSON 数据后没有双引号,可能是因为发送的消息没有正确地序列化为 JSON 字符串。如果你是在命令行中使用 mosquitto_pub 发布消息,可以尝试使用 -m 参数将 JSON 数据包装在双引号中,例如:
```
mosquitto_pub -t "topic" -m "{\"key\": \"value\"}"
```
如果你是在代码中使用 mosquitto 库发送消息,可以使用 JSON 库将数据序列化为 JSON 字符串,并使用 mosquitto_publish 函数发布消息,例如:
```c
#include <mosquitto.h>
#include <cJSON.h>
int main(){
char *json_str = "{\"key\": \"value\"}";
cJSON *json_obj = cJSON_Parse(json_str);
char *serialized_json = cJSON_Print(json_obj);
struct mosquitto *mosq = NULL;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, true, NULL);
mosquitto_connect(mosq, "localhost", 1883, 60);
mosquitto_publish(mosq, NULL, "topic", strlen(serialized_json), serialized_json, 0, false);
mosquitto_disconnect(mosq);
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
cJSON_Delete(json_obj);
free(serialized_json);
}
```
注意,在上面的代码中,我们使用 cJSON 库将 JSON 字符串解析为 JSON 对象,并使用 cJSON_Print 函数将 JSON 对象序列化为 JSON 字符串。然后我们将序列化后的 JSON 字符串作为消息内容,使用 mosquitto_publish 函数发布消息。
阅读全文