在C語言中,處理JSON數據結構通常需要用到第三方庫。常見的JSON解析庫有cJSON、jansson等。其中,cJSON是比較輕量級的一種庫,可以方便地解析JSON數據。
對于簡單的JSON數據,使用cJSON庫很容易處理。但是,當JSON數據包含多重嵌套的數組時,則需要使用多個循環來對其進行處理。下面是一個使用cJSON庫處理多重嵌套JSON數組的例子:
#include <stdio.h> #include <cJSON.h> int main() { char* json_str = "{ \"name\": \"Tom\", \"scores\": [ { \"subject\": \"Math\", \"score\": 90 }, { \"subject\": \"English\", \"score\": 85 }, { \"subject\": \"Chinese\", \"score\": 95 } ] }"; cJSON* root = cJSON_Parse(json_str); cJSON* scores = cJSON_GetObjectItem(root, "scores"); int scores_size = cJSON_GetArraySize(scores); for (int i = 0; i < scores_size; i++) { cJSON* score = cJSON_GetArrayItem(scores, i); cJSON* subject = cJSON_GetObjectItem(score, "subject"); cJSON* s_score = cJSON_GetObjectItem(score, "score"); printf("%s: %d\n", subject->valuestring, s_score->valueint); } cJSON_Delete(root); return 0; }
上述代碼中,我們首先定義了一個JSON字符串,包含一個name字段和一個嵌套的scores數組。我們使用cJSON庫的cJSON_Parse函數將其解析為一個cJSON對象。接著,我們使用cJSON_GetObjectItem函數獲取scores數組,并使用cJSON_GetArraySize獲取scores數組的大小。
接下來,我們使用for循環遍歷scores數組,并使用cJSON_GetArrayItem函數獲取數組中的每個元素。然后,我們再使用cJSON_GetObjectItem函數獲取每個元素中的subject和score字段,并輸出它們的值。
最后,我們使用cJSON_Delete函數來釋放cJSON對象占用的內存。
上一篇vue使用svg畫圖
下一篇python 灰度值信息