在C語(yǔ)言中,遍歷JSON List可以使用第三方的JSON庫(kù)來(lái)實(shí)現(xiàn),常用的有jansson和cJSON等。本文以cJSON為例來(lái)講解如何遍歷JSON List。
// JSON串 const char* json_string = '[{"name":"Tom","age":18},{"name":"Jerry","age":20}]'; // 解析JSON串 cJSON* root = cJSON_Parse(json_string); if (root == NULL) { // 解析失敗 return; } // 獲取JSON List cJSON* json_list = cJSON_GetArrayItem(root, 0); // 遍歷JSON List int list_size = cJSON_GetArraySize(json_list); for (int i = 0; i< list_size; i++) { cJSON* item = cJSON_GetArrayItem(json_list, i); // 獲取name和age cJSON* name = cJSON_GetObjectItem(item, "name"); cJSON* age = cJSON_GetObjectItem(item, "age"); // 打印name和age printf("name:%s, age:%d\n", name->valuestring, age->valueint); } // 釋放內(nèi)存 cJSON_Delete(root);
首先,將要解析的JSON串定義為一個(gè)字符串常量。接著,使用cJSON_Parse函數(shù)將字符串解析成一個(gè)cJSON對(duì)象,如果解析失敗,返回值為NULL。然后,通過(guò)cJSON_GetArrayItem函數(shù)獲取JSON List對(duì)象。接著,使用cJSON_GetArraySize獲取JSON List中元素的個(gè)數(shù),循環(huán)遍歷每個(gè)JSON對(duì)象。在循環(huán)中,使用cJSON_GetArrayItem函數(shù)獲取具體的JSON對(duì)象,在獲取name和age等具體字段的值。遍歷結(jié)束后,使用cJSON_Delete函數(shù)釋放內(nèi)存。
以上就是使用C語(yǔ)言遍歷JSON List的簡(jiǎn)單步驟和示例代碼。使用第三方JSON庫(kù)如果在編譯時(shí)有找不到庫(kù)文件的問(wèn)題,需要使用-l參數(shù)指定鏈接庫(kù)。