色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 查詢數據庫返回json數據類型

呂致盈2年前8瀏覽0評論

C語言中可以使用mysql.h庫實現數據庫的查詢,并將查詢結果以json數據類型返回。

首先需要連接數據庫,并進行查詢操作,如下所示:

MYSQL* mysql = mysql_init(NULL);
MYSQL_RES* res;
MYSQL_ROW row;
char* query = "SELECT * FROM table";
mysql_real_connect(mysql, "localhost", "user", "password", "database", 0, NULL, 0);
mysql_query(mysql, query);
res = mysql_store_result(mysql);

上述代碼連接本地數據庫,用戶名為user,密碼為password,查詢的數據庫為database中的table表,并將查詢結果存儲在res中。

接下來需要將查詢結果轉換為json數據類型,可以使用json-c庫中的json_object類型,如下所示:

json_object* jobj = json_object_new_object();
int num_fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res)))
{
json_object* jsub_obj = json_object_new_object();
for (int i = 0; i< num_fields; i++)
{
json_object* jvalue = json_object_new_string(row[i]);
json_object_object_add(jsub_obj, mysql_fetch_field_direct(res, i)->name, jvalue);
}
json_object_array_add(jobj, jsub_obj);
}

上述代碼使用json_object_new_object()創建一個空的json對象,然后使用mysql_num_fields()獲取查詢結果中的列數,使用mysql_fetch_row()遍歷查詢結果中的每一行,并使用json_object_new_object()創建一個空的json子對象。最后使用mysql_fetch_field_direct()獲取每一列的列名,將列名和列值構建成json鍵值對,并使用json_object_array_add()將json子對象添加到json對象中。

最后需要將json對象轉換為json字符串,可以使用json-c庫中的json_object_to_json_string()函數,如下所示:

char* json_str = json_object_to_json_string(jobj);
printf("%s", json_str);

上述代碼使用json_object_to_json_string()將json對象轉換為json字符串,并使用printf()輸出json字符串。