JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。C語言可以通過第三方庫(如jansson)來解析和生成JSON字符串。在使用中,我們需要將JSON數據通過網絡發送到其他設備上,同時也需要從其他設備上接收JSON數據。本文將介紹在C語言中如何發送和接收JSON數據。
在發送JSON數據之前,我們需要將JSON對象轉換成字符串,可以使用jansson庫提供的函數來完成。例如下面的代碼將創建一個JSON對象,并將其轉換為字符串。
json_t *json_obj = json_object(); json_object_set_new(json_obj, "name", json_string("Tom")); json_object_set_new(json_obj, "age", json_integer(20)); const char *json_str = json_dumps(json_obj, JSON_COMPACT);
在將JSON字符串發送到其他設備時,可以使用套接字(socket)來發送數據。以下代碼使用套接字發送JSON字符串。
int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); server_addr.sin_port = htons(8888); connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); send(sockfd, json_str, strlen(json_str), 0); close(sockfd);
接收JSON數據需要先接收數據,并將接收到的數據轉換成JSON對象。以下代碼使用套接字接收JSON字符串,并將其轉換成JSON對象。
int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(8888); bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)); listen(sockfd, 128); int connfd = accept(sockfd, (struct sockaddr *)NULL, NULL); char buff[1024] = {0}; recv(connfd, buff, 1024, 0); close(sockfd); json_error_t error; json_t *json_obj = json_loads(buff, 0, &error);
以上是在C語言中發送和接收JSON數據的基本方法,開發者可以在實際的項目中根據需要進行修改和擴展。
上一篇vue加載的方法