C語言作為一種廣泛使用的編程語言,在開發中經常會遇到需要將JSON數組對象數組對象數組轉換為C語言的需求。在這篇文章中,我們將介紹如何實現這個過程。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { const char *json_string = "[ [ { \"name\": \"Tom\", \"age\": 21 }, { \"name\": \"Jerry\", \"age\": 22 }, { \"name\": \"Spike\", \"age\": 23 } ], [ { \"name\": \"Bob\", \"age\": 32 }, { \"name\": \"Alice\", \"age\": 33 } ] ]"; json_error_t error; json_t *json_data = json_loads(json_string, 0, &error); if (!json_data) { printf("Error: %s\n", error.text); return 1; } size_t outer_size = json_array_size(json_data); for (size_t i = 0; i < outer_size; i++) { json_t *inner_array = json_array_get(json_data, i); size_t inner_size = json_array_size(inner_array); for (size_t j = 0; j < inner_size; j++) { json_t *obj = json_array_get(inner_array, j); const char *name = json_string_value(json_object_get(obj, "name")); int age = json_integer_value(json_object_get(obj, "age")); printf("Name: %s, Age: %d\n", name, age); } } json_decref(json_data); return 0; }
在上面的代碼中,我們使用了jansson庫來解析JSON數據并遍歷其內容。首先,我們使用json_loads()函數將JSON字符串轉換為json_t類型的數據。如果轉換失敗,則會輸出錯誤信息并返回1。
在成功轉換后,我們首先獲取JSON數組的外部大小,也就是數組中包含的數組的個數。然后,我們用循環遍歷每個內部數組并獲取其內部大小,也就是包含的對象的個數。接著,我們遍歷每個對象并獲取其鍵值對中的name和age屬性的值。
最后,我們使用json_decref()函數釋放json_t類型的數據。
通過這種方式,我們可以在C語言中方便地處理復雜的JSON數據。