c map是一個(gè)基于C語言的通用集合容器,它可以在不同的數(shù)據(jù)類型之間建立映射關(guān)系,比如將不同的key value與數(shù)組、鏈表、字符串等進(jìn)行映射。同時(shí),c map也提供了解析JSON的功能。
#include#include int main() { char *json_str = "{\"name\":\"Tom\",\"age\":18,\"school\":\"MIT\"}"; cJSON *json = cJSON_Parse(json_str); if (!json) { printf("Error before: %s\n", cJSON_GetErrorPtr()); } else { cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); printf("name: %s\n", name->valuestring); cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); printf("age: %d\n", age->valueint); cJSON *school = cJSON_GetObjectItemCaseSensitive(json, "school"); printf("school: %s\n", school->valuestring); } cJSON_Delete(json); return 0; }
以上是解析JSON的基本代碼,cJSON_Parse()函數(shù)可以將json字符串轉(zhuǎn)化為cJSON結(jié)構(gòu)體,便于后續(xù)的訪問和操作。cJSON_GetObjectItemCaseSensitive()函數(shù)可以直接訪問cJSON結(jié)構(gòu)體中的某個(gè)元素的值,例如上面的"name"和"age"。
需要注意的是,如果解析失敗,cJSON_Parse()函數(shù)會(huì)返回NULL,需要進(jìn)行錯(cuò)誤處理。同時(shí),在訪問具體值的時(shí)候,也需要判斷對(duì)應(yīng)類型,例如上面的"name"是字符串類型,"age"是整型類型。
在實(shí)際應(yīng)用中,可以結(jié)合其他庫進(jìn)行HTTP請(qǐng)求的發(fā)送和接收,同時(shí)解析JSON信息,并存儲(chǔ)到數(shù)據(jù)庫中等。