在C語言中獲取前臺傳過來的JSON可以通過HTTP協議來實現。假設有一個前端頁面通過AJAX請求了一個JSON數據,并將數據以POST方式發送給后端。那么后端通過解析HTTP請求體中的數據,即可獲取前端傳過來的JSON。
#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { int content_length=0; char* content_type=NULL; char* query_string=NULL; char* tmp=NULL; char* request_method=getenv("REQUEST_METHOD"); if(!strcmp(request_method, "GET")) { query_string=getenv("QUERY_STRING"); if(query_string) tmp=strdup(query_string); } else { content_type=getenv("CONTENT_TYPE"); char* s_content_length=getenv("CONTENT_LENGTH"); if(s_content_length) content_length=atoi(s_content_length); if(content_length==0 || !content_type || strcmp(content_type, "application/json")) { printf("Status: 400 Bad Request\n\n"); printf("Bad Request
\n"); exit(0); } tmp=(char*)malloc(content_length+1); memset(tmp, 0, content_length+1); int i=0; for(;i%s\n", tmp); free(tmp); return 0; }
上述代碼中通過調用getenv來獲取HTTP請求中的環境變量,根據請求方法來獲取JSON數據。需要注意的是,如果請求方法為POST,我們需要同時從CONTENT_LENGTH和標準輸入里來獲取JSON數據。解析JSON數據可以使用常用的JSON解析庫,比如json-c、cJSON等。