C 獲取 JSON 下所有的數據
以前在項目中,我們往往使用字符串的方式進行 JSON 的數據處理,其效率和代碼可維護性都比較低。現在很多語言都提供了對于 JSON 的庫,大大提高了 JSON 數據的處理效率。
在 C 語言中,我們可以使用
json-c庫來處理 JSON 數據。
下面以一個 JSON 文件的讀取為例,來講解如何獲取 JSON 下所有的數據。
/* 讀取 JSON 文件 */ #include <stdio.h> #include <json-c/json.h> int main() { FILE *fp; struct json_object *root; char buffer[512]; /* 打開 JSON 文件 */ fp = fopen("data.json", "r"); fread(buffer, 512, 1, fp); fclose(fp); /* 解析成 JSON 對象 */ root = json_tokener_parse(buffer); /* 獲取 JSON 下所有的數據 */ printf("JSON 數據:\n%s\n", json_object_to_json_string_ext(root, JSON_C_TO_STRING_PRETTY)); return 0; }
通過
json_tokener_parse函數,我們可以將 JSON 字符串解析成 JSON 對象。然后通過
json_object_to_json_string_ext函數,我們可以將 JSON 對象轉化成 JSON 字符串。
這個例子只是簡單地將 JSON 數據輸出了,如果我們需要獲取 JSON 下的某一個數據,可以使用
json_object_get函數。
例如,我們有一個這樣的 JSON 數據:
{ "name": "Tom", "age": 20, "gender": "male", "hobbies": [ "reading", "running", "playing games" ] }
我們可以通過這樣的代碼來獲取其中的某一個數據:
/* 獲取 JSON 下的某一個數據 */ struct json_object *name_obj = json_object_get(root, "name"); const char *name_val = json_object_get_string(name_obj); printf("name 值:%s\n", name_val);
這里我獲取了 JSON 對象中的
name數據,并以字符串的形式輸出了。
以上就是使用 C 語言獲取 JSON 下所有的數據的方法,希望對大家有所幫助。