C語(yǔ)言是一種非常常用且重要的編程語(yǔ)言,它可以幫助程序員們輕松實(shí)現(xiàn)各種功能。在現(xiàn)代化的開(kāi)發(fā)中,JSON已成為了一種非常流行的數(shù)據(jù)交換格式,而在C語(yǔ)言中,讀取JSON數(shù)組也是一個(gè)非常常見(jiàn)的功能。今天我們就來(lái)學(xué)習(xí)一下C語(yǔ)言中讀取JSON數(shù)組的方法。
#include <stdio.h> #include <jansson.h> int main() { const char *json_data = "[1, 2, 3, 4, 5]"; json_t *json_obj = json_loads(json_data, 0, NULL); if (!json_obj) { printf("Error parsing json\n"); return 1; } if(!json_is_array(json_obj)) { printf("Json data is not an array\n"); json_decref(json_obj); return 1; } json_array_foreach(json_obj, i, val){ printf("Value at index %d: %d\n", i, (int)json_integer_value(val)); } json_decref(json_obj); return 0; }
首先,我們要引用頭文件`jansson.h`,這是一種C語(yǔ)言中常用的JSON解析庫(kù)。接著,我們定義了一個(gè)字符串變量`json_data`,里面儲(chǔ)存了一個(gè)JSON數(shù)組。然后,我們使用`json_loads`函數(shù)將JSON數(shù)組轉(zhuǎn)化為json_t類型的對(duì)象`json_obj`。
在讀取JSON數(shù)組之前,我們首先需要判斷這個(gè)對(duì)象是否是一個(gè)合法的JSON數(shù)組。我們使用`json_is_array`函數(shù)判斷這個(gè)對(duì)象是否是一個(gè)數(shù)組,如果不是,我們將會(huì)輸出錯(cuò)誤信息并退出程序。
如果這個(gè)對(duì)象是一個(gè)合法的JSON數(shù)組,我們就可以使用`json_array_foreach`函數(shù)遍歷數(shù)組了。該函數(shù)接受三個(gè)參數(shù),第一個(gè)參數(shù)是json_t類型的數(shù)組對(duì)象,第二個(gè)參數(shù)是遍歷時(shí)當(dāng)前元素的下標(biāo),第三個(gè)參數(shù)則是遍歷時(shí)當(dāng)前的元素。我們遍歷數(shù)組對(duì)象并輸出其下標(biāo)以及其整型數(shù)值。
最后,我們釋放JSON對(duì)象并返回0,程序運(yùn)行結(jié)束。