JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于Web服務之間的數據交換。在C語言中,我們可以使用開源的json-c庫來解析和生成JSON數據。在處理JSON數據時,我們需要遍歷JSON中的各個元素,這篇文章將介紹如何在C語言中遍歷JSON字符串。
在json-c庫中,我們使用json_tokener_parse函數將JSON字符串解析為一個json_object結構體。json_object結構體中的元素可以使用json_object_object_foreach(遍歷對象)、json_object_array_foreach(遍歷數組)和json_object_get_string(獲取字符串)等方法進行訪問。
#include <stdio.h> #include <json-c/json.h> int main() { // JSON字符串 char *json_str = "{\"name\":\"Alice\",\"age\":18,\"hobbies\":[\"reading\",\"swimming\"]}"; // 解析JSON字符串 json_object *json_obj = json_tokener_parse(json_str); // 遍歷JSON對象 json_object_object_foreach(json_obj, key, val) { // 判斷元素類型 enum json_type type = json_object_get_type(val); printf("key: %s, type: %d, ", key, type); if (type == json_type_string) { printf("value: %s\n", json_object_get_string(val)); } else if (type == json_type_int) { printf("value: %d\n", json_object_get_int(val)); } else if (type == json_type_array) { printf("value: ["); int len = json_object_array_length(val); for (int i = 0; i < len; i++) { printf("%s", json_object_get_string(json_object_array_get_idx(val, i))); if (i < len - 1) { printf(", "); } } printf("]\n"); } else { printf("unknown value\n"); } } // 釋放內存 json_object_put(json_obj); return 0; }
在上述代碼中,我們將JSON字符串解析成一個json_object結構體,并使用json_object_object_foreach方法遍歷其元素。在遍歷過程中,我們使用json_object_get_type方法獲取元素類型,然后使用不同的方法獲取元素的值。對于數組類型的元素,我們使用json_object_array_length方法獲取數組長度,并使用json_object_array_get_idx和json_object_get_string方法獲取數組元素。
通過上述代碼,我們可以方便地遍歷JSON字符串,獲取其中的元素值。在實際開發中,我們可以將上述代碼封裝成一個函數或工具類,以便在需要時調用。
上一篇d3 line json
下一篇vue data負值數組