JSON是JavaScript Object Notation的縮寫。它是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于Web應(yīng)用程序中的數(shù)據(jù)傳輸。JSON由鍵值對(duì)組成,使用逗號(hào)分隔。在C語言中,可以使用第三方庫(kù)進(jìn)行JSON解析和生成。以下是一個(gè)使用CJSON庫(kù)進(jìn)行JSON解析的示例:
#include "cJSON.h" #include#include int main() { char *json_str = "{\"name\":\"Tom\", \"age\":25, \"married\":false}"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { printf("Parse JSON failed.\n"); return -1; } cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); cJSON *married = cJSON_GetObjectItem(root, "married"); printf("Name: %s\n", name->valuestring); printf("Age: %d\n", age->valueint); printf("Married: %d\n", married->valueint); cJSON_Delete(root); return 0; }
在程序中,首先聲明一個(gè)JSON字符串,然后使用cJSON_Parse()函數(shù)將字符串解析為cJSON對(duì)象。返回的cJSON對(duì)象可以通過cJSON_GetObjectItem()函數(shù)獲取指定鍵的值。使用cJSON_Delete()函數(shù)釋放由cJSON_Parse()函數(shù)創(chuàng)建的cJSON對(duì)象。
CJSON庫(kù)不僅支持JSON解析,還支持JSON生成。以下是一個(gè)使用CJSON庫(kù)生成JSON字符串的示例:
#include "cJSON.h" #include#include int main() { cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 25); cJSON_AddFalseToObject(root, "married"); char *json_str = cJSON_Print(root); printf("%s\n", json_str); free(json_str); cJSON_Delete(root); return 0; }
在程序中,首先使用cJSON_CreateObject()函數(shù)創(chuàng)建一個(gè)空的cJSON對(duì)象,然后使用cJSON_AddXXXToObject()函數(shù)向?qū)ο笾刑砑渔I值對(duì)。最后使用cJSON_Print()函數(shù)將cJSON對(duì)象轉(zhuǎn)換為JSON字符串,并使用free()函數(shù)釋放內(nèi)存。和解析相反,生成JSON的過程是從內(nèi)存生成的,所以無需使用cJSON_Delete()函數(shù)來釋放cJSON對(duì)象。