在c語言中,我們通常以數據流的形式進行輸入輸出,而json數據也可以通過數據流進行傳輸。但是與其他語言不同,c并沒有內置的函數可以直接獲取json數據。
所幸我們可以通過第三方json庫來解決這個問題,比如cJSON。在使用cJSON之前,我們需要先準備好要解析的json數據。這里以一個簡單的例子為例:
{ "name": "Lucy", "age": 18, "hobby": ["singing", "dancing"] }
我們可以使用fread函數讀取json數據,再通過cJSON庫對json數據進行解析。下面是一段示例代碼:
#include <stdio.h> #include <cJSON.h> int main() { FILE* fp; char buff[1024]; cJSON* root = NULL; fp = fopen("test.json", "rb"); fread(buff, 1, 1024, fp); fclose(fp); root = cJSON_Parse(buff); if (root) { printf("name: %s\n", cJSON_GetObjectItem(root, "name")->valuestring); printf("age: %d\n", cJSON_GetObjectItem(root, "age")->valueint); cJSON* hobby = cJSON_GetObjectItem(root, "hobby"); for (int i = 0; i< cJSON_GetArraySize(hobby); i++) { printf("hobby_%d: %s\n", i, cJSON_GetArrayItem(hobby, i)->valuestring); } } cJSON_Delete(root); return 0; }
這段代碼中,我們首先使用fopen函數打開json文件,然后通過fread函數讀取文件內容。之后,我們使用cJSON_Parse函數對json數據進行解析,將解析結果保存在一個cJSON對象中。
通過cJSON_GetObjectItem函數可以獲取到指定名稱的值,對于數組類型的值,我們可以通過cJSON_GetArraySize和cJSON_GetArrayItem來遍歷數組元素。
最后,別忘了在程序結束時使用cJSON_Delete函數釋放內存空間。
上一篇vue不重新渲染
下一篇vue不設置logo