C 語言是一種廣泛應用于系統編程和嵌入式系統開發中的高級程序設計語言。而 Json 數組則是一種常用的數據格式,它能夠簡化數據的傳輸和存儲。在 C 語言中處理 Json 數組,我們通常需要使用第三方庫,本文將介紹如何使用 cJSON 庫來處理 Json 數組。
#include <stdio.h> #include <stdlib.h> #include <cJSON.h> int main(int argc, char **argv) { char *jsonStr = "[{\"name\":\"ZhangSan\",\"age\":18},{\"name\":\"LiSi\",\"age\":20}]"; cJSON *root = cJSON_Parse(jsonStr); // 解析 Json 字符串,并返回 Json 對象 if (root == NULL) { printf("failed to parse json.\n"); return -1; } cJSON *item = NULL; cJSON_ArrayForEach(item, root) // 遍歷數組對象 { cJSON *name = cJSON_GetObjectItemCaseSensitive(item, "name"); // 獲取名字 cJSON *age = cJSON_GetObjectItemCaseSensitive(item, "age"); // 獲取年齡 printf("%s, %d\n", name->valuestring, age->valueint); // 輸出結構體成員 } cJSON_Delete(root); // 釋放 Json 對象所占內存 return 0; }
以上代碼中,我們首先定義了一個 Json 字符串,其中包含兩個名字和年齡的結構體數組。接著我們使用 cJSON 庫中的 cJSON_Parse 函數解析 Json 字符串,得到了 Json 對象 root。然后使用 cJSON_ArrayForEach 函數遍歷數組對象中的每一個元素,通過 cJSON_GetObjectItemCaseSensitive 函數獲取每個元素中的成員,再使用 printf 函數將結果輸出到控制臺上。最后我們使用 cJSON_Delete 函數釋放 Json 對象所占內存。
在實際的項目中,我們通常需要從網絡或文件讀取 Json 數據。對于文件讀取,我們可以使用文件操作函數配合 cJSON_Parse 函數來實現。對于網絡數據,我們可以使用 HTTP 客戶端庫如 libcurl 來獲取 Json 數據,并將其傳入 cJSON_Parse 函數進行解析。無論哪種方式,我們都需要注意安全處理,以免數據異常導致程序崩潰或者安全漏洞。