在使用c語言進行web開發(fā)時,經(jīng)常需要從request對象中獲取json數(shù)據(jù)。下面我們介紹如何使用c語言獲取請求的json數(shù)據(jù)。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <jansson.h> static char* get_request_payload(char* buffer, int content_length) { char* request_payload = (char*) malloc(content_length + 1); memset(request_payload, '\0', content_length + 1); strncpy(request_payload, buffer, content_length); return request_payload; } int main() { // 先獲得http請求的json數(shù)據(jù),假設(shè)它在一個字符數(shù)組里 char buffer [] = "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"; int content_length = strlen(buffer); // 把字符數(shù)組里的數(shù)據(jù)存到一個字符串里 char* request_payload = get_request_payload(buffer, content_length); // 用jansson解析JSON數(shù)據(jù) json_t *root; json_error_t error; root = json_loads(request_payload, JSON_DECODE_ANY, &error); // 解析json數(shù)據(jù) if (root) { const char *name; json_integer_t age; const char *city; json_unpack(root, "{s:s, s:i, s:s}", "name", &name, "age", &age, "city", &city); printf("Name: %s\n", name); printf("Age: %d\n", (int) age); printf("City: %s\n", city); json_decref(root); } free(request_payload); return 0; }
解析JSON數(shù)據(jù)的代碼中使用了jansson庫。首先,我們需要從HTTP請求中獲取JSON數(shù)據(jù)。在這里,我們將它存儲到一個字符串中。接著,我們使用jansson把這個字符串解析為一個JSON對象,在這里,我們可以獲取JSON對象中的各個字段的值。
在解析JSON數(shù)據(jù)的時候先通過json_loads函數(shù)把JSON字符串轉(zhuǎn)成JSON對象,然后通過json_unpack函數(shù)把對象中的值分別取出來,注意參數(shù)中的格式是一個C風格字符串,其中的s表示字符串,i表示整數(shù)。
以上就是使用c語言獲取請求的json數(shù)據(jù)的方法,希望對你有幫助。
上一篇vue3新增