JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,具有易讀、易理解和易編寫的特點(diǎn)。而C語言是一種高效、可移植、結(jié)構(gòu)化編程語言,常用于開發(fā)各種系統(tǒng)級(jí)應(yīng)用程序。在開發(fā)中,我們經(jīng)常需要將JSON數(shù)據(jù)存入數(shù)據(jù)庫中,以供后續(xù)使用。
在C語言中,可以使用第三方庫cJSON來處理JSON數(shù)據(jù)。cJSON是一個(gè)開源的JSON解析器和生成器,可以輕松解析JSON文本字符串并將其轉(zhuǎn)換為C結(jié)構(gòu)體,也可以將C結(jié)構(gòu)體序列化為JSON字符串。
首先,我們需要安裝和配置cJSON庫。可以通過以下命令下載和安裝:
git clone https://github.com/DaveGamble/cJSON.git cd cJSON make sudo make install
安裝完成后,可以在代碼中引入cJSON頭文件,并使用其API來處理JSON數(shù)據(jù)。假設(shè)我們有以下JSON字符串:
{ "name": "Tom", "age": 25, "address": { "city": "Shanghai", "street": "Xuhui" } }
我們可以使用cJSON庫將其解析為C結(jié)構(gòu)體,并存入數(shù)據(jù)庫中,示例代碼如下:
#include#include #include #include #include "cJSON.h" int main() { const char *json_str = "{\"name\":\"Tom\",\"age\":25,\"address\":{\"city\":\"Shanghai\",\"street\":\"Xuhui\"}}"; MYSQL *conn = mysql_init(NULL); mysql_real_connect(conn, "localhost", "root", "password", "test", 0, NULL, 0); cJSON *root = cJSON_Parse(json_str); cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON *age = cJSON_GetObjectItem(root, "age"); cJSON *address = cJSON_GetObjectItem(root, "address"); cJSON *city = cJSON_GetObjectItem(address, "city"); cJSON *street = cJSON_GetObjectItem(address, "street"); char sql[256]; sprintf(sql, "INSERT INTO user (name, age, city, street) VALUES ('%s', %d, '%s', '%s')", name->valuestring, age->valueint, city->valuestring, street->valuestring); mysql_query(conn, sql); cJSON_Delete(root); mysql_close(conn); return 0; }
以上代碼將JSON字符串解析為C結(jié)構(gòu)體,分別獲取其中的各個(gè)字段值,并存入MySQL數(shù)據(jù)庫中。需要注意的是,C語言中的字符串常量需要用雙引號(hào)括起來,而JSON中的字符串需要用單引號(hào)或雙引號(hào)都可以。