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字符串。