在我們的開發工作中,有時候需要將數據以json格式返回給前端,并且還需要支持直接下載,這時候我們可以使用c語言來實現。
首先,我們需要先將數據轉換成json格式的字符串,這可以借助cJSON庫來實現。下面是一個簡單的例子:
cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Tom"); cJSON_AddNumberToObject(root, "age", 18); char *json_string = cJSON_Print(root);
接著,我們需要將json字符串作為響應體返回給前端。在http協議中,我們可以添加一個Content-Disposition頭部來實現直接下載。下面是一個示例:
char *content_type = "application/json"; char *content_disposition = "attachment; filename=data.json"; char *response_body = json_string; int response_body_len = strlen(json_string); char *response_headers = (char *)malloc(1024); sprintf(response_headers, "HTTP/1.1 200 OK\r\nContent-Type: %s\r\nContent-Disposition: %s\r\nContent-Length: %d\r\n\r\n", content_type, content_disposition, response_body_len); int response_headers_len = strlen(response_headers); char *response = (char *)malloc(response_headers_len + response_body_len); memcpy(response, response_headers, response_headers_len); memcpy(response + response_headers_len, response_body, response_body_len); write(connfd, response, response_headers_len + response_body_len);
在以上代碼中,我們首先定義了Content-Type和Content-Disposition頭部,并將json字符串作為響應體,然后計算出整個響應的長度,并將響應頭和響應體拼接起來,最后通過write函數將響應發送給前端。
通過以上步驟,我們就可以實現將json數據以直接下載的形式返回給前端了。