隨著互聯網和移動互聯網的迅猛發展,各種前后端技術層出不窮。而在這些技術中,json成為了一個不可或缺的角色。因此,我們需要掌握json的解析方法來處理這些數據。下面,我們來講一下如何將c語言中的json解析成list string。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "cJSON.h" int main() { char* json_str = "{\"name\":\"zhangsan\",\"age\":18,\"hobbies\":[\"reading\",\"running\",\"swimming\"]}"; cJSON* root = cJSON_Parse(json_str); if (!root) { printf("json parse error\n"); return -1; } cJSON* hobbies = cJSON_GetObjectItem(root, "hobbies"); if (!hobbies) { printf("json parse error\n"); cJSON_Delete(root); return -1; } if (cJSON_IsArray(hobbies)) { int size = cJSON_GetArraySize(hobbies); if (size >0) { char** list = (char**)malloc(sizeof(char*) * size); memset(list, 0, sizeof(char*) * size); int i = 0; cJSON* hobby = NULL; cJSON_ArrayForEach(hobby, hobbies) { char* str = cJSON_PrintUnformatted(hobby); if (str) { list[i++] = str; } } for (i = 0; i< size; i++) { printf("%s\n", list[i]); } for (i = 0; i< size; i++) { if (list[i]) { free(list[i]); } } free(list); } } cJSON_Delete(root); return 0; }
上面是一個使用cJSON庫將json解析成list string的代碼示例。首先,我們需要將json字符串解析成一個cJSON格式的根節點。之后,我們可以通過cJSON_GetObjectItem()函數獲取到我們需要解析的數組項。在本例中,我們需要獲取"hobbies"數組。
然后,我們需要使用cJSON_IsArray()函數判斷該項是否為一個數組類型。如果是,則可以使用cJSON_GetArraySize()函數獲取數組的大小。通過cJSON_ArrayForEach()函數遍歷數組中的每一項,將其轉化為一個字符串并存放在char**類型的list中。
最后,我們輸出list中的每一個字符串,并釋放內存。