在C語言中,我們可以使用第三方庫如cJSON來輔助操作JSON字符串。
假設我們有一個JSON字符串數組如下:
{ "students": [ { "name": "Tom", "age": 20, "score": [90, 85, 95] }, { "name": "Jack", "age": 21, "score": [85, 80, 90] } ] }
遍歷數組需要用到循環結構。我們先將JSON字符串解析成cJSON對象:
cJSON* root = cJSON_Parse(json_str); cJSON* students = cJSON_GetObjectItemCaseSensitive(root, "students"); for (int i = 0; i< cJSON_GetArraySize(students); i++) { cJSON* student = cJSON_GetArrayItem(students, i); ... }
這里我們使用了cJSON庫中的函數cJSON_Parse將JSON字符串解析成cJSON對象。然后使用cJSON_GetObjectItemCaseSensitive函數獲取到數組對象students。 接著使用cJSON_GetArraySize和cJSON_GetArrayItem函數分別獲取到數組大小和每個元素的對象。
接下來就可以在循環體中遍歷數組元素,我們可以使用cJSON_GetObjectItemCaseSensitive函數獲取元素的子對象,如下:
cJSON* name = cJSON_GetObjectItemCaseSensitive(student, "name"); cJSON* age = cJSON_GetObjectItemCaseSensitive(student, "age"); cJSON* score = cJSON_GetObjectItemCaseSensitive(student, "score"); for (int j = 0; j< cJSON_GetArraySize(score); j++) { cJSON* score_item = cJSON_GetArrayItem(score, j); ... }
在遍歷數組元素中,我們同樣需要使用循環結構,通過函數cJSON_GetArrayItem依次獲取數組元素對象。 同時需要注意的是,如果數組中每個元素的結構相同,可以將遍歷數組的循環體封裝成函數以便代碼復用。
最后別忘了在用完cJSON對象后釋放它們的內存:
cJSON_Delete(root);
以上就是在C語言中遍歷JSON字符串數組的方法,使用第三方庫如cJSON可以簡單快速地實現。希望對您有所幫助。