JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,其易讀易寫(xiě)、易于解析和生成等特點(diǎn),成為了現(xiàn)代網(wǎng)絡(luò)傳輸中常用的數(shù)據(jù)格式之一。而在C語(yǔ)言中,如何處理JSON字符串呢?
首先,在C語(yǔ)言中,JSON字符串是以char類型的數(shù)組形式存在的。常見(jiàn)操作有將JSON字符串解析為C語(yǔ)言中的結(jié)構(gòu)體或數(shù)組,或?qū)語(yǔ)言中的數(shù)據(jù)轉(zhuǎn)化為JSON字符串。
// 將JSON字符串解析為C語(yǔ)言中的結(jié)構(gòu)體 #include#include #include #include "cJSON.h" // 需要下載cJSON庫(kù) // 定義結(jié)構(gòu)體 typedef struct student { char name[20]; int age; char sex[10]; } Student; int main() { char* json_str = "{\"name\":\"Tom\",\"age\":18,\"sex\":\"male\"}"; // JSON字符串 cJSON* json = cJSON_Parse(json_str); // 解析JSON字符串 Student s; // 定義結(jié)構(gòu)體 strcpy(s.name, cJSON_GetObjectItem(json, "name")->valuestring); // 從JSON中獲取值并賦值給結(jié)構(gòu)體 s.age = cJSON_GetObjectItem(json, "age")->valueint; strcpy(s.sex, cJSON_GetObjectItem(json, "sex")->valuestring); printf("name: %s, age: %d, sex: %s\n", s.name, s.age, s.sex); cJSON_Delete(json); // 釋放內(nèi)存 return 0; }
// 將C語(yǔ)言中的結(jié)構(gòu)體轉(zhuǎn)化為JSON字符串 #include#include #include "cJSON.h" // 需要下載cJSON庫(kù) // 定義結(jié)構(gòu)體 typedef struct student { char name[20]; int age; char sex[10]; } Student; int main() { Student s = {"Tom", 18, "male"}; // 定義結(jié)構(gòu)體并賦值 cJSON* json = cJSON_CreateObject(); // 創(chuàng)建JSON對(duì)象 cJSON_AddStringToObject(json, "name", s.name); // 將結(jié)構(gòu)體中的值添加到JSON中 cJSON_AddNumberToObject(json, "age", s.age); cJSON_AddStringToObject(json, "sex", s.sex); char* json_str = cJSON_Print(json); // 轉(zhuǎn)化為JSON字符串 printf("%s\n", json_str); free(json_str); // 釋放內(nèi)存 cJSON_Delete(json); // 釋放內(nèi)存 return 0; }
以上兩段代碼分別演示了如何將JSON字符串解析為C語(yǔ)言中的結(jié)構(gòu)體,并將C語(yǔ)言中的結(jié)構(gòu)體轉(zhuǎn)化為JSON字符串。當(dāng)然,這只是JSON處理的基礎(chǔ)操作,實(shí)際使用中還需要根據(jù)不同的情況進(jìn)行靈活運(yùn)用。