C語言通過使用第三方庫或手動解析JSON字符串,可以實現(xiàn)對JSON List的解析。
在使用第三方庫時,常用的是cJSON庫,它是一個輕量級的JSON解析器。如下是使用cJSON庫解析JSON List的示例代碼:
cJSON *json = cJSON_Parse(json_string); if(json) { cJSON *list = cJSON_GetObjectItem(json, "list"); if(cJSON_IsArray(list)) { int size = cJSON_GetArraySize(list); for(int i = 0; i< size; i++) { cJSON *item = cJSON_GetArrayItem(list, i); // 處理item } } cJSON_Delete(json); }
在上述代碼中,首先使用cJSON_Parse函數(shù)將JSON字符串解析成cJSON對象,然后通過cJSON_GetObjectItem函數(shù)獲取JSON List對象,再使用cJSON_IsArray函數(shù)判斷是否是List,如果是,就使用cJSON_GetArraySize函數(shù)獲取List的元素個數(shù),在循環(huán)中使用cJSON_GetArrayItem函數(shù)分別獲取List中的每個元素。
當(dāng)然,如果不使用第三方庫,也可以手動解析JSON字符串。下面是手動解析JSON List的示例代碼:
char *json_str = "..."; // 待解析的JSON字符串 char *list_str = strstr(json_str, "\"list\":"); if(list_str) { list_str += 7; // 跳過"list":的7個字符 char *list_end = strchr(list_str, ']'); if(list_end) { *list_end = '\0'; // 截斷字符串 list_end--; char *item_str = strchr(list_str, '{'); while(item_str && item_str< list_end) { char *item_end = strchr(item_str, '}'); if(item_end) { *item_end = '\0'; // 截斷字符串 // 處理item_str item_str = strchr(item_end+1, '{'); } else { break; } } } }
在上述代碼中,首先使用strstr函數(shù)尋找"list":出現(xiàn)的位置,然后使用strchr函數(shù)尋找List結(jié)束的位置,接著使用循環(huán)和strchr函數(shù)尋找List中的每個元素,并對每個元素進行處理。