在開發(fā)過程中,我們常常需要將C語言中的數(shù)據(jù)庫表轉(zhuǎn)換成JSON格式,以便于在網(wǎng)頁上展示或進(jìn)行數(shù)據(jù)交互。下面我們來介紹該如何實(shí)現(xiàn)。
首先,我們需要定義一個(gè)結(jié)構(gòu)體,用于保存數(shù)據(jù)庫表中的每一行數(shù)據(jù)。
typedef struct { int id; char name[50]; int age; } Person;
接著,我們需要連接數(shù)據(jù)庫,查詢出需要的數(shù)據(jù),并將每行數(shù)據(jù)填充到該結(jié)構(gòu)體中。
//連接數(shù)據(jù)庫 MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "root", "password", "testdb", 0, NULL, 0); //查詢數(shù)據(jù) MYSQL_RES *result; mysql_query(&mysql, "SELECT * FROM person"); result = mysql_store_result(&mysql); //將數(shù)據(jù)填充到結(jié)構(gòu)體中 MYSQL_ROW row; Person person; while((row = mysql_fetch_row(result))) { person.id = atoi(row[0]); strcpy(person.name, row[1]); person.age = atoi(row[2]); }
接下來,我們可以利用C語言中的JSON庫將該結(jié)構(gòu)體轉(zhuǎn)換成JSON格式。
#include "json-c/json.h" //將結(jié)構(gòu)體轉(zhuǎn)換成JSON格式 json_object *json = json_object_new_object(); json_object_object_add(json, "id", json_object_new_int(person.id)); json_object_object_add(json, "name", json_object_new_string(person.name)); json_object_object_add(json, "age", json_object_new_int(person.age)); //將JSON格式輸出 printf("%s\n", json_object_to_json_string(json));
最后,不要忘記釋放內(nèi)存和關(guān)閉數(shù)據(jù)庫連接。
//釋放內(nèi)存 json_object_put(json); mysql_free_result(result); //關(guān)閉數(shù)據(jù)庫連接 mysql_close(&mysql);
通過以上步驟,我們就可以將C語言中的數(shù)據(jù)庫表數(shù)據(jù)轉(zhuǎn)換成JSON格式了。