C WebAPI是一種常用的API開發(fā)方式,可用于多種應(yīng)用場景。其中,返回JSON數(shù)據(jù)是常見的需求,下面將介紹如何實現(xiàn)C WebAPI返回JSON數(shù)據(jù)。
首先,需要使用C語言提供的json-c庫,可以通過鏈接該庫,使用該庫提供的API函數(shù)來快速完成JSON數(shù)據(jù)的序列化(將C結(jié)構(gòu)體轉(zhuǎn)成JSON)和反序列化(將JSON轉(zhuǎn)成C結(jié)構(gòu)體)操作。
// 序列化C結(jié)構(gòu)體為JSON字符串 char *json_str = NULL; struct json_object *json_obj = json_object_new_object(); json_object_object_add(json_obj, "name", json_object_new_string("張三")); json_object_object_add(json_obj, "age", json_object_new_int(20)); json_str = json_object_to_json_string(json_obj); json_object_put(json_obj); // 釋放json對象,避免內(nèi)存泄露
上述代碼演示了如何將C結(jié)構(gòu)體序列化成JSON字符串。首先,創(chuàng)建結(jié)構(gòu)體對應(yīng)的json_object對象,然后添加屬性,再通過函數(shù)把對象轉(zhuǎn)成JSON字符串,最后釋放對象。
// 反序列化JSON字符串為C結(jié)構(gòu)體 struct person { char *name; int age; } p; struct json_object *json_obj = json_tokener_parse(json_str); struct json_object *json_name, *json_age; json_object_object_get_ex(json_obj, "name", &json_name); json_object_object_get_ex(json_obj, "age", &json_age); p.name = strdup(json_object_get_string(json_name)); // strdup函數(shù)創(chuàng)建一份json_name字符串的副本 p.age = json_object_get_int(json_age); json_object_put(json_obj); // 釋放json對象,避免內(nèi)存泄露
上述代碼演示了如何將JSON字符串反序列化成C結(jié)構(gòu)體。首先,通過函數(shù)將JSON字符串轉(zhuǎn)成json_object對象,然后通過函數(shù)獲取屬性,并將屬性值轉(zhuǎn)成C結(jié)構(gòu)體對應(yīng)的類型,最后釋放對象。
使用上述代碼示例,即可實現(xiàn)C WebAPI返回JSON數(shù)據(jù)的功能。