c web返回json最常見的場景是在后端服務器通過c語言生成json格式的數據,然后將其返回到前端,供前端進行展示或處理。在c語言中,生成json數據需要用到json-c這個庫。
#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; }
以上代碼創建了一個json對象,并將其轉成json字符串,最后使用strdup()函數復制一份字符串,避免指針失效。接下來要將這個json字符串返回給前端,可以使用cgi協議(Common Gateway Interface)來實現。
#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()函數輸出了http頭部信息和json字符串,http頭部信息中Content-Type指定了返回的數據類型,Content-Length指定了返回數據的長度。