JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它是基于JavaScript語言的一個子集,使用易于理解的文本格式進行數據的傳輸和編碼。在C語言中,解析JSON格式字符串需要使用第三方庫,比如:Jansson、cJSON等。
cJSON是一個輕量級的JSON庫,可以在C和C++中使用。它可以將JSON格式的字符串解析為C語言中的數據結構,以便于程序進行使用和操作。cJSON中的常用數據結構包括:
typedef struct cJSON { struct cJSON *next; struct cJSON *prev; struct cJSON *child; int type; char *valuestring; int valueint; double valuedouble; char *string; } cJSON;
以上的結構體中,type表示數據類型,valuestring表示字符串類型的值,valueint和valuedouble分別表示整型和浮點型的值,而string則代表變量名。
使用cJSON解析JSON格式的字符串需要進行三個步驟:創建cJSON結構體、解析JSON格式字符串和釋放cJSON結構體。
首先,程序需要調用cJSON_Parse函數,將JSON格式的字符串解析為cJSON結構體。例如:
const char *json_string = "{\"name\":\"John\",\"age\":30,\"married\":false}"; cJSON *root = cJSON_Parse(json_string);
以上代碼就是將{"name":"John","age":30,"married":false}這個字符串解析為cJSON結構體,并將結果存儲在指針root中。
接著,程序可以在cJSON結構體中獲取想要的值。例如獲取name的值:
cJSON *name = cJSON_GetObjectItem(root, "name"); printf("name=%s\n", name->valuestring);
以上代碼就是從root結構體中獲取name鍵對應的值,并使用printf函數打印出來。
最后,程序需要使用cJSON_Delete函數釋放cJSON結構體。例如:
cJSON_Delete(root);
以上代碼就是將root指針所指向的cJSON結構體釋放。
cJSON作為一種輕量級的JSON庫,具有簡單易用的特點,可以方便地在C語言程序中解析JSON格式字符串。