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