JSON是當(dāng)前前端開(kāi)發(fā)中經(jīng)常使用到的數(shù)據(jù)格式,而在開(kāi)發(fā)中,我們經(jīng)常需要將JSON數(shù)據(jù)轉(zhuǎn)換為對(duì)象數(shù)組來(lái)進(jìn)行操作。在C語(yǔ)言中,我們可以使用一些庫(kù)將JSON數(shù)據(jù)復(fù)制成對(duì)象數(shù)組。
//首先,我們需要先引入相應(yīng)的庫(kù) #include <jansson.h> //假設(shè)我們有以下的JSON數(shù)據(jù) const char* json_str = "[ { \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }, { \"name\": \"Jane\", \"age\": 25, \"city\": \"Los Angeles\" }, { \"name\": \"Bob\", \"age\": 50, \"city\": \"Chicago\" } ]"; //定義一個(gè)結(jié)構(gòu)體存儲(chǔ)我們要復(fù)制的JSON數(shù)據(jù) typedef struct { const char *name; int age; const char *city; } Person; //使用jansson庫(kù)將JSON數(shù)據(jù)復(fù)制成對(duì)象數(shù)組 json_t *root = json_loads(json_str, 0, NULL); //解析JSON數(shù)據(jù) if(!json_is_array(root)) { //JSON數(shù)據(jù)不是數(shù)組類(lèi)型,處理錯(cuò)誤 } size_t num_persons = json_array_size(root); //獲取數(shù)組長(zhǎng)度 Person *persons = malloc(num_persons * sizeof(Person)); //申請(qǐng)空間 for(int i=0; i該方法雖然看起來(lái)稍微繁瑣一些,但相對(duì)來(lái)說(shuō)比較靈活,可以精確地獲取JSON數(shù)據(jù)中的值,適用于各種復(fù)雜數(shù)據(jù)結(jié)構(gòu)的JSON數(shù)據(jù)。