淘先锋技术网

首页 1 2 3 4 5 6 7

在C语言中,解析POST JSON数据格式的过程需要先获取POST数据,然后将POST数据反序列化成JSON格式,接着可以通过遍历JSON对象来取得需要的数据。

//获取POST数据
char *post_data = NULL;
if (strcmp(cgiRequestMethod, "POST") == 0) {
int len = atoi(getenv("CONTENT_LENGTH"));
post_data = (char*) malloc(sizeof(char) * (len + 1));
fgets(post_data, len + 1, stdin);
}
//反序列化POST数据为JSON格式
cJSON *root = cJSON_Parse(post_data);
//遍历JSON对象取得需要的数据
if (root != NULL) {
cJSON *username = cJSON_GetObjectItem(root, "username");
if (username != NULL) {
printf("用户名:%s\n", username->valuestring);
}
cJSON *password = cJSON_GetObjectItem(root, "password");
if (password != NULL) {
printf("密码:%s\n", password->valuestring);
}
}
//释放内存
cJSON_Delete(root);
free(post_data);

在上面的代码中,首先通过读取CGI变量"REQUEST_METHOD"来判断是否为POST请求,如果是,则通过读取CGI变量"CONTENT_LENGTH"获取POST数据长度,并分配相应大小的内存来存储POST数据,在调用fgets函数读取POST数据到内存。接着使用cJSON_Parse函数将POST数据反序列化为JSON格式的cJSON对象,这里需要注意的是,需要先检查返回的cJSON对象是否为NULL,如果为NULL,则说明JSON格式有误。然后通过cJSON_GetObjectItem函数遍历JSON对象,取得需要的数据,这里需要注意的是,需要先检查返回的cJSON对象是否为NULL,如果为NULL,则说明JSON对象中没有需要的数据。最后,释放内存。