JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于網(wǎng)絡(luò)數(shù)據(jù)傳輸。在C語言中,有許多庫可以用于處理JSON數(shù)據(jù)。
其中,一個(gè)較為常用的庫是cJSON。cJSON是一個(gè)簡單的C語言庫,用于解析和生成JSON數(shù)據(jù)。
使用cJSON,可以將一個(gè)JSON字符串解析成cJSON結(jié)構(gòu)體,并對其進(jìn)行遍歷和操作。以下是一個(gè)示例代碼:
#include <stdlib.h> #include <stdio.h> #include <cJSON.h> int main() { char *json_str = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { printf("Parse error: %s\n", cJSON_GetErrorPtr()); return 1; } cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); cJSON *city = cJSON_GetObjectItem(root, "city"); printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("City: %s\n", city->valuestring); cJSON_Delete(root); return 0; }
以上代碼將一個(gè)JSON字符串解析成cJSON結(jié)構(gòu)體,并獲取其中的"name"、"age"和"city"屬性。注意到最后需要調(diào)用
除了從字符串解析JSON數(shù)據(jù),cJSON同樣支持將cJSON結(jié)構(gòu)體輸出為JSON字符串。以下是一個(gè)示例代碼:
#include <stdlib.h> #include <stdio.h> #include <cJSON.h> int main() { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "John"); cJSON_AddNumberToObject(root, "age", 30); cJSON_AddStringToObject(root, "city", "New York"); char *json_str = cJSON_PrintUnformatted(root); printf("JSON: %s\n", json_str); free(json_str); cJSON_Delete(root); return 0; }
以上代碼創(chuàng)建一個(gè)cJSON結(jié)構(gòu)體,并添加"name"、"age"和"city"屬性。最后使用