今天我們來講一下C字符串轉(zhuǎn)JSON對象數(shù)組的方法。在日常開發(fā)中,我們經(jīng)常需要將C字符串轉(zhuǎn)換為JSON對象數(shù)組進行處理和傳輸。這時候就需要用到一些C語言庫函數(shù)和JSON處理庫。
#include<stdio.h> #include<string.h> #include<jansson.h> int main() { const char *json_str = "[{\"name\":\"Lucy\",\"age\":20}, {\"name\":\"Tom\",\"age\":21}]"; json_error_t error; json_t *json_obj = json_loads(json_str, 0, &error); if(!json_is_array(json_obj)) { printf("Error: Json string is not an array.\n"); return -1; } int index = 0; json_t *value; json_array_foreach(json_obj, index, value) { if(!json_is_object(value)) { printf("Error: Json array element is not an object.\n"); continue; } const char *name = json_string_value(json_object_get(value, "name")); int age = json_integer_value(json_object_get(value, "age")); printf("name:%s, age:%d\n", name, age); } json_decref(json_obj); return 0; }
以上代碼演示了一個C字符串轉(zhuǎn)JSON對象數(shù)組的示例。其中,json_loads函數(shù)是將給定C字符串轉(zhuǎn)換為JSON對象的函數(shù)。該函數(shù)需要傳入字符串,以及除此之外還有三個參數(shù),分別為flags、error和ctx。flag表示解析JSON字符串的選項,一般傳0即可;error用于指向可選的json_error_t結(jié)構(gòu),以獲取錯誤信息;ctx表示解析函數(shù)回調(diào)上下文,一般傳NULL即可。
接著,我們需要通過函數(shù)json_is_array判斷轉(zhuǎn)換后的JSON對象是否為數(shù)組類型。如果是,則可以通過json_array_foreach獲取數(shù)組中的每一個元素。在每個元素中,我們又可以通過json_object_get函數(shù),獲取對象中指定key的value值。
最后,我們需要釋放JSON對象,避免內(nèi)存泄漏的問題。我們可以通過函數(shù)json_decref來進行解除引用的操作。
以上就是C字符串轉(zhuǎn)JSON對象數(shù)組的方法和示例。如果想要深入了解JSON處理庫的使用,還需要繼續(xù)學習和實踐。