在C語言中,我們經常需要將數據庫中的主從表轉換成JSON格式,以方便在Web頁面上展示和處理。下面我們將介紹如何使用C語言進行這種轉換。
#include <stdio.h> #include <stdlib.h> #include <mysql.h> #include <cjson/cJSON.h> int main(void) { MYSQL *conn; // MySQL連接 MYSQL_RES *res; // MySQL結果集 MYSQL_ROW row; // MySQL返回結果的行 cJSON *json, *root, *array; // cJSON對象 const char *json_printed; // json字符串 // 初始化MySQL連接 conn = mysql_init(NULL); // 連接數據庫 if (!mysql_real_connect(conn, "localhost", "root", "123456", "test", 0, NULL, 0)) { fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(conn)); return -1; } // 查詢主從表,并將結果轉為JSON格式 mysql_query(conn, "SELECT * FROM tb_master INNER JOIN tb_slave ON tb_master.id = tb_slave.master_id"); res = mysql_store_result(conn); array = cJSON_CreateArray(); // 創建JSON數組 while ((row = mysql_fetch_row(res)) != NULL) { // 創建JSON對象 json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "master_name", row[1]); cJSON_AddStringToObject(json, "slave_name", row[5]); cJSON_AddItemToArray(array, json); } cJSON_AddItemToObject(root = cJSON_CreateObject(), "data", array); // 打印JSON字符串 json_printed = cJSON_PrintUnformatted(root); printf("%s\n", json_printed); // 釋放連接和結果集 mysql_free_result(res); mysql_close(conn); return 0; }
以上代碼使用MySQL API連接到數據庫,查詢主從表,并將結果轉換成JSON格式,最后輸出JSON字符串。該過程中使用了開源的cJSON庫,方便我們操作JSON對象。使用cJSON庫可以大大簡化JSON處理的過程,提高效率。