C JSON是C語(yǔ)言中用于處理JSON數(shù)據(jù)的一種庫(kù)。而泛型集合則是指能夠容納不同數(shù)據(jù)類(lèi)型的集合。那么如何將C JSON解析出的數(shù)據(jù)轉(zhuǎn)化成泛型集合的形式呢?
//這里使用C JSON庫(kù)中的例子做參考 #include "cJSON.h" int main() { char *jsonstr = "{\"name\":\"Jack\",\"age\":18,\"hobby\":[\"reading\",\"music\"]}"; cJSON *json = cJSON_Parse(jsonstr); //解析json字符串 cJSON *name = cJSON_GetObjectItem(json, "name"); //獲取鍵為name的值 cJSON *age = cJSON_GetObjectItem(json, "age"); //獲取鍵為age的值 cJSON *hobby = cJSON_GetObjectItem(json, "hobby"); //獲取鍵為hobby的值(一個(gè)數(shù)組) //將解析出的數(shù)據(jù)存入泛型集合中 List *list = createList(); add(list, cJSON_CreateString(name->valuestring)); add(list, cJSON_CreateNumber(age->valueint)); cJSON *hobbyArr = cJSON_GetArrayItem(hobby, 0); for(int i=0;ivaluestring)); } //釋放資源 cJSON_Delete(json); clearList(list); return 0; }
在上面的例子中,我們通過(guò)C JSON庫(kù)中的函數(shù)cJSON_Parse將json字符串解析成一個(gè)json對(duì)象,然后使用cJSON_GetObjectItem函數(shù)依次取出里面的值。接著我們創(chuàng)建了一個(gè)泛型集合List,并使用cJSON中的函數(shù)cJSON_CreateString、cJSON_CreateNumber等創(chuàng)建相應(yīng)類(lèi)型的值,并將其添加到List中去。
最后我們需要釋放掉C JSON中解析出的json對(duì)象以及剛剛創(chuàng)建的List。這里我們通過(guò)C JSON中的函數(shù)cJSON_Delete和自己實(shí)現(xiàn)的函數(shù)clearList來(lái)釋放資源。