c web返回json最常見的場(chǎng)景是在后端服務(wù)器通過c語言生成json格式的數(shù)據(jù),然后將其返回到前端,供前端進(jìn)行展示或處理。在c語言中,生成json數(shù)據(jù)需要用到j(luò)son-c這個(gè)庫。
#includestruct json_object *create_json_object() { struct json_object *obj = json_object_new_object(); json_object_object_add(obj, "name", json_object_new_string("Tom")); json_object_object_add(obj, "age", json_object_new_int(25)); json_object_object_add(obj, "gender", json_object_new_string("male")); return obj; } char *create_json_string() { struct json_object *obj = create_json_object(); const char *json_str = json_object_to_json_string(obj); char *result = strdup(json_str); json_object_put(obj); return result; }
以上代碼創(chuàng)建了一個(gè)json對(duì)象,并將其轉(zhuǎn)成json字符串,最后使用strdup()函數(shù)復(fù)制一份字符串,避免指針失效。接下來要將這個(gè)json字符串返回給前端,可以使用cgi協(xié)議(Common Gateway Interface)來實(shí)現(xiàn)。
#include#include #include #include int main() { char *json_str = create_json_string(); printf("Content-Type: application/json\n"); printf("Content-Length: %lu\n", strlen(json_str)); printf("\n"); printf("%s", json_str); free(json_str); return 0; }
以上代碼使用printf()函數(shù)輸出了http頭部信息和json字符串,http頭部信息中Content-Type指定了返回的數(shù)據(jù)類型,Content-Length指定了返回?cái)?shù)據(jù)的長度。