C語言中可用的JSON解析庫有很多,比如cJSON、json-c等。在解析JSON字符串的過程中,我們通常希望將解析出來的結(jié)果以數(shù)組的形式保存下來。本文介紹如何將JSON數(shù)據(jù)轉(zhuǎn)換為數(shù)組對象數(shù)組形式。
// 示例JSON數(shù)據(jù) const char *json_data = "{" "\"users\":[" "{" "\"name\":\"peter\"," "\"age\":18" "}," "{" "\"name\":\"mary\"," "\"age\":20" "}" "]" "}"; // 解析JSON字符串 cJSON *root = cJSON_Parse(json_data); cJSON *users = cJSON_GetObjectItem(root, "users"); // 獲取數(shù)組元素個數(shù) int array_size = cJSON_GetArraySize(users); printf("%d\n", array_size); // 輸出2 // 遍歷數(shù)組 int i = 0; for (i = 0; i< array_size; i++) { cJSON *user = cJSON_GetArrayItem(users, i); cJSON *name = cJSON_GetObjectItem(user, "name"); cJSON *age = cJSON_GetObjectItem(user, "age"); printf("name: %s, age: %d\n", name->valuestring, age->valueint); } cJSON_Delete(root);
在上面的示例代碼中,我們使用了cJSON庫解析了一個包含有兩個用戶信息的JSON字符串,并將結(jié)果以數(shù)組的形式保存下來。我們使用了cJSON_GetArraySize函數(shù)獲取了數(shù)組元素個數(shù),并使用了cJSON_GetArrayItem函數(shù)遍歷了整個數(shù)組,將每個元素的數(shù)據(jù)獲取出來打印出來。