C語(yǔ)言是一門具有廣泛應(yīng)用的編程語(yǔ)言。而隨著互聯(lián)網(wǎng)的普及,JSON(JavaScript Object Notation)這種數(shù)據(jù)交換格式也變得越來越常見。在C語(yǔ)言中,我們?nèi)绾巫x取JSON類型的數(shù)據(jù)呢?
#include#include #include #include "cjson/cJSON.h" int main() { // 定義一個(gè)JSON字符串 char *jsonStr = "{\"name\": \"John\", \"age\": 25}"; // 將字符串解析為JSON對(duì)象 cJSON *root = cJSON_Parse(jsonStr); // 判斷JSON對(duì)象是否解析成功 if (root == NULL) { printf("JSON解析失敗!\n"); return -1; } // 獲取JSON中的數(shù)據(jù) cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); // 判斷獲取數(shù)據(jù)是否成功 if (name == NULL || age == NULL) { printf("獲取數(shù)據(jù)失敗!\n"); return -1; } // 打印JSON中的數(shù)據(jù) printf("name: %s\n", name->valuestring); printf("age: %d\n", age->valueint); // 釋放內(nèi)存 cJSON_Delete(root); return 0; }
在這段代碼中,我們使用了第三方庫(kù)cJSON來解析和操作JSON數(shù)據(jù)。在函數(shù)cJSON_Parse中,我們將JSON字符串作為參數(shù)傳入,得到一個(gè)cJSON類型的JSON對(duì)象。接著,我們使用函數(shù)cJSON_GetObjectItem獲取JSON中的數(shù)據(jù),函數(shù)的第一個(gè)參數(shù)是JSON對(duì)象,第二個(gè)參數(shù)是要獲取的數(shù)據(jù)的鍵名。
如果獲取數(shù)據(jù)失敗,我們需要注意cJSON_GetObjectItem的返回值,該函數(shù)返回一個(gè)cJSON類型的對(duì)象。如果該對(duì)象為NULL,則說明獲取數(shù)據(jù)失敗。而如果獲取數(shù)據(jù)成功,我們可以通過訪問該對(duì)象的valuestring或valueint成員來獲取JSON數(shù)據(jù)的值。
最后,我們需要釋放內(nèi)存。在cJSON中,可以使用函數(shù)cJSON_Delete來銷毀JSON對(duì)象,以釋放內(nèi)存。