C 數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn) JSON 數(shù)據(jù)格式轉(zhuǎn)換
使用 C 語言編寫程序時(shí),可能會(huì)需要將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為 JSON 格式,以便于在 Web 應(yīng)用中使用。下面是一個(gè)簡單的示例,用于將 MySQL 數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為 JSON 格式:
#include <stdio.h>#include <stdlib.h>#include <mysql/mysql.h>#include <jansson.h>void error(char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; json_t *root, *array, *obj; char *json_str; int i, num_fields; conn = mysql_init(NULL); if (mysql_real_connect(conn, "localhost", "root", "123456", "test", 0, NULL, 0) == NULL) error("連接 MySQL 數(shù)據(jù)庫失敗。"); if (mysql_query(conn, "SELECT * FROM users") != 0) error("查詢數(shù)據(jù)失敗。"); res = mysql_use_result(conn); num_fields = mysql_num_fields(res); array = json_array(); while ((row = mysql_fetch_row(res))) { obj = json_object(); for (i = 0; i< num_fields; i++) { json_object_set_new(obj, mysql_fetch_field_direct(res, i)->name, json_string(row[i])); } json_array_append(array, obj); } json_decref(obj); mysql_free_result(res); mysql_close(conn); root = json_object(); json_object_set_new(root, "users", array); json_str = json_dumps(root, JSON_ENCODE_ANY); printf("%s\n", json_str); free(json_str); json_decref(array); json_decref(root); return 0; }
在上面的示例中,我們首先連接 MySQL 數(shù)據(jù)庫,并查詢 users 表中的所有數(shù)據(jù)。然后,將每一行數(shù)據(jù)添加到 JSON 數(shù)組中。最后,將 JSON 數(shù)組添加到 JSON 對(duì)象中,并輸出 JSON 字符串。