在現(xiàn)代Web應(yīng)用程序中,我們使用各種技術(shù)從服務(wù)器獲取數(shù)據(jù)并將其呈現(xiàn)給客戶端。而SQL和JSON是兩種非常流行的數(shù)據(jù)格式。SQL被廣泛用于關(guān)系數(shù)據(jù)庫(kù),而JSON則被廣泛用于Web服務(wù)和AJAX等技術(shù)。
c這門(mén)語(yǔ)言非常適合用于將其他格式轉(zhuǎn)換為JSON。如果您正在開(kāi)發(fā)一個(gè)需要將SQL轉(zhuǎn)換為JSON的Web應(yīng)用程序,c代碼是您的首選。
#include<stdio.h> #include<stdlib.h> #include<mysql.h> #include<string.h> #include<jansson.h> const char* db_host = "localhost"; const char* db_user = "root"; const char* db_password = "password"; const char* db_name = "my_database"; MYSQL* conn; int main() { conn = mysql_init(NULL); if (conn == NULL) { fprintf(stderr, "mysql_init() failed\n"); exit(1); } if (mysql_real_connect(conn, db_host, db_user, db_password, db_name, 0, NULL, 0) == NULL) { fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn)); mysql_close(conn); exit(1); } if (mysql_query(conn, "SELECT * FROM my_table")) { fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn)); mysql_close(conn); exit(1); } MYSQL_RES* result = mysql_store_result(conn); int num_fields = mysql_num_fields(result); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { json_t* obj = json_object(); for (int i = 0; i< num_fields; i++) { json_object_set_new(obj, mysql_fetch_field_direct(result, i)->name, json_string(row[i] ? row[i] : "NULL")); } char* json_string = json_dumps(obj, JSON_INDENT(2)); printf("%s\n", json_string); free(json_string); json_decref(obj); } mysql_free_result(result); mysql_close(conn); exit(0); }
這個(gè)c程序連接到我們的MySQL數(shù)據(jù)庫(kù),檢索所有行和列,創(chuàng)建一個(gè)JSON對(duì)象,將每一列的名稱和值添加到該對(duì)象中,并將該對(duì)象轉(zhuǎn)換為JSON字符串。
通過(guò)使用c來(lái)將SQL轉(zhuǎn)換為JSON,我們可以輕松地將數(shù)據(jù)從服務(wù)器傳輸?shù)娇蛻舳耍⑹刮覀兊腤eb應(yīng)用程序變得更加靈活和高效。