JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,被廣泛應(yīng)用于網(wǎng)絡(luò)中的數(shù)據(jù)傳輸、配置文件和存儲(chǔ)。C 語(yǔ)言作為一種高效的編程語(yǔ)言,在解析 JSON 數(shù)據(jù)時(shí)也具有很大的優(yōu)勢(shì)。
在 C 語(yǔ)言中,我們可以使用第三方庫(kù) cJSON 來(lái)讀取 JSON 字符串。cJSON 是一個(gè)輕量級(jí)的庫(kù),使用簡(jiǎn)單,適合用來(lái)解析比較簡(jiǎn)單的 JSON 數(shù)據(jù)。下面我們看一下具體的用法。
// 在代碼中引入 cJSON 庫(kù) #include <cJSON.h> // 定義一個(gè) JSON 字符串 char text[] = '{ "name":"cJSON", "year":2013, "language":["C", "Java", "Python"]}'; // 解析 JSON 字符串 cJSON* root = cJSON_Parse(text); // 獲取值 char* name = cJSON_GetObjectItem(root, "name")->valuestring; int year = cJSON_GetObjectItem(root, "year")->valueint; cJSON* language = cJSON_GetObjectItem(root, "language"); int size = cJSON_GetArraySize(language); for (int i = 0; i < size; i++) { printf("%s\n", cJSON_GetArrayItem(language, i)->valuestring); } // 釋放資源 cJSON_Delete(root);
在上面的代碼中,我們首先引入了 cJSON 庫(kù),接著定義了一個(gè)包含 JSON 數(shù)據(jù)的字符串 text。然后通過(guò)調(diào)用 cJSON_Parse 函數(shù)將字符串解析成 cJSON 對(duì)象,并通過(guò) cJSON_GetObjectItem 函數(shù)獲取到對(duì)象中的值。
在獲取到值之后,我們可以對(duì)其進(jìn)行操作。例如,在上面的代碼中,我們通過(guò) cJSON_GetObjectItem 獲取到了 language 數(shù)組,然后使用 cJSON_GetArraySize 函數(shù)獲取到了數(shù)組的長(zhǎng)度,最后通過(guò) cJSON_GetArrayItem 函數(shù)一個(gè)個(gè)獲取其中的元素。
最后,別忘了在程序結(jié)束時(shí)釋放掉 cJSON 對(duì)象所占用的內(nèi)存。