在使用C語言編寫網絡編程的過程中,有時候需要將一個JSON對象傳遞給服務端。這時候,可以使用C語言中的JSON庫對JSON對象進行處理,然后再使用網絡編程的相關函數將JSON對象傳遞給服務端。
// 以下代碼使用C語言中的 cJSON 庫來處理JSON對象 #include#include #include "cJSON.h" int main() { // 創建JSON對象 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 25); cJSON *hobbyArr = cJSON_CreateArray(); cJSON_AddItemToArray(hobbyArr, cJSON_CreateString("籃球")); cJSON_AddItemToArray(hobbyArr, cJSON_CreateString("游泳")); cJSON_AddItemToArray(hobbyArr, cJSON_CreateString("看電影")); cJSON_AddItemToObject(root, "hobby", hobbyArr); // 將JSON對象轉換為字符串 char *str = cJSON_Print(root); // 連接服務器 int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons(8888); inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr); connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); // 將JSON字符串發送給服務器 char buf[1024]; snprintf(buf, sizeof(buf), "%s\n", str); write(sockfd, buf, strlen(buf)); // 釋放資源 cJSON_Delete(root); free(str); close(sockfd); return 0; }
在上面的代碼中,首先使用 cJSON_CreateObject 函數創建了一個JSON對象,然后使用 cJSON_AddStringToObject 和 cJSON_AddNumberToObject 函數向JSON對象中添加了 name 和 age 兩個屬性。
接著,使用 cJSON_CreateArray 函數創建了一個JSON數組,并使用 cJSON_AddItemToArray 函數向其中添加了三個字符串元素。最后,使用 cJSON_AddItemToObject 函數將數組作為 hobby 屬性添加到 JSON 對象中。
將 JSON 對象轉換為字符串后,使用網絡編程中的相關函數將字符串發送給服務端。最后,使用 cJSON_Delete 函數和 free 函數釋放資源,關閉客戶端與服務器的連接。