C JSON是C語言中用于處理JSON數據的一種庫。而泛型集合則是指能夠容納不同數據類型的集合。那么如何將C JSON解析出的數據轉化成泛型集合的形式呢?
//這里使用C JSON庫中的例子做參考 #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的值(一個數組) //將解析出的數據存入泛型集合中 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; }
在上面的例子中,我們通過C JSON庫中的函數cJSON_Parse將json字符串解析成一個json對象,然后使用cJSON_GetObjectItem函數依次取出里面的值。接著我們創建了一個泛型集合List,并使用cJSON中的函數cJSON_CreateString、cJSON_CreateNumber等創建相應類型的值,并將其添加到List中去。
最后我們需要釋放掉C JSON中解析出的json對象以及剛剛創建的List。這里我們通過C JSON中的函數cJSON_Delete和自己實現的函數clearList來釋放資源。