C語言被廣泛應用于嵌入式設備和系統級編程,而JSON數據格式已經成為了一種通用的數據交換格式。
在C語言中,可以利用第三方庫來實現JSON的編解碼。其中較為常用的是cJSON。而在將JSON數據寫入數據庫時,需要用到相應的數據庫操作庫,比如MySQL、PostgreSQL等。
以下是使用cJSON和MySQL C API將JSON數據寫入數據庫的一個示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql.h> #include <cJSON.h> int main() { MYSQL *conn = mysql_init(NULL); if (!conn) { fprintf(stderr, "Error: Failed to initialize MySQL connection.\n"); return EXIT_FAILURE; } if (!mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0)) { fprintf(stderr, "Error: Failed to connect to MySQL database.\n"); mysql_close(conn); return EXIT_FAILURE; } const char *json_str = "{ \"name\": \"Alice\", \"age\": 18 }"; cJSON *json = cJSON_Parse(json_str); if (!json) { fprintf(stderr, "Error: Failed to parse JSON string.\n"); mysql_close(conn); return EXIT_FAILURE; } char *name = cJSON_GetObjectItemCaseSensitive(json, "name")->valuestring; int age = cJSON_GetObjectItemCaseSensitive(json, "age")->valueint; char sql[256]; sprintf(sql, "INSERT INTO users (name, age) VALUES ('%s', %d)", name, age); if (mysql_query(conn, sql)) { fprintf(stderr, "Error: Failed to execute SQL statement.\n"); mysql_close(conn); cJSON_Delete(json); return EXIT_FAILURE; } printf("JSON data written to database successfully.\n"); mysql_close(conn); cJSON_Delete(json); return EXIT_SUCCESS; }
通過cJSON的解析,可以方便地提取出JSON中的數據,并將其寫入數據庫中。