在進(jìn)行 Web 開(kāi)發(fā)中,常常需要將數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)換為 JSON 格式用于前端展示。本文將介紹使用 C 語(yǔ)言將數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)換為 JSON 格式的方法。
首先,我們需要使用 C 語(yǔ)言中的第三方庫(kù) cJSON,它是一個(gè)輕量級(jí)的 JSON 解析器和生成器。我們可以在官網(wǎng)下載 cJSON 的源代碼并添加到項(xiàng)目中。
#include "cJSON.h"
接下來(lái),我們使用 SQLite3 的函數(shù)進(jìn)行數(shù)據(jù)庫(kù)操作,將查詢(xún)結(jié)果存儲(chǔ)在 cJSON 數(shù)據(jù)結(jié)構(gòu)中,并將其轉(zhuǎn)換為字符串類(lèi)型。
cJSON *root = cJSON_CreateArray(); sqlite3_stmt *stmt; sqlite3_prepare_v2(database, query, -1, &stmt, NULL); int result = sqlite3_step(stmt); while (result == SQLITE_ROW) { int columns = sqlite3_column_count(stmt); cJSON *item = cJSON_CreateObject(); for (int i = 0; i< columns; i++) { const char *name = sqlite3_column_name(stmt, i); const char *value = (const char*) sqlite3_column_text(stmt, i); cJSON_AddItemToObject(item, name, cJSON_CreateString(value)); } cJSON_AddItemToArray(root, item); result = sqlite3_step(stmt); } sqlite3_finalize(stmt); char* json_str = cJSON_Print(root);
最后,我們需要釋放 cJSON 的內(nèi)存空間和 SQLite3 執(zhí)行查詢(xún)的資源。
cJSON_Delete(root); sqlite3_close(database);
通過(guò)以上代碼,我們便可以將數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)換為 JSON 格式,并發(fā)送給前端進(jìn)行展示。在實(shí)際項(xiàng)目中,我們可以根據(jù)需求對(duì) JSON 進(jìn)行定制化處理,例如添加時(shí)間戳等信息。