在使用C語言編寫網(wǎng)絡(luò)編程的過程中,有時候需要將一個JSON對象傳遞給服務(wù)端。這時候,可以使用C語言中的JSON庫對JSON對象進行處理,然后再使用網(wǎng)絡(luò)編程的相關(guān)函數(shù)將JSON對象傳遞給服務(wù)端。
// 以下代碼使用C語言中的 cJSON 庫來處理JSON對象 #include#include #include "cJSON.h" int main() { // 創(chuàng)建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對象轉(zhuǎn)換為字符串 char *str = cJSON_Print(root); // 連接服務(wù)器 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字符串發(fā)送給服務(wù)器 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 函數(shù)創(chuàng)建了一個JSON對象,然后使用 cJSON_AddStringToObject 和 cJSON_AddNumberToObject 函數(shù)向JSON對象中添加了 name 和 age 兩個屬性。
接著,使用 cJSON_CreateArray 函數(shù)創(chuàng)建了一個JSON數(shù)組,并使用 cJSON_AddItemToArray 函數(shù)向其中添加了三個字符串元素。最后,使用 cJSON_AddItemToObject 函數(shù)將數(shù)組作為 hobby 屬性添加到 JSON 對象中。
將 JSON 對象轉(zhuǎn)換為字符串后,使用網(wǎng)絡(luò)編程中的相關(guān)函數(shù)將字符串發(fā)送給服務(wù)端。最后,使用 cJSON_Delete 函數(shù)和 free 函數(shù)釋放資源,關(guān)閉客戶端與服務(wù)器的連接。