C語(yǔ)言可以用于訪問(wèn)各種數(shù)據(jù)庫(kù),包括MySQL、SQLite以及PostgreSQL等。其中,對(duì)于從Web前端發(fā)送的JSON數(shù)據(jù),C語(yǔ)言可以使用第三方庫(kù)libjson-c來(lái)解析。
// 解析JSON數(shù)據(jù) json_object* jobj = json_tokener_parse(jsondata); // 從JSON數(shù)據(jù)中獲取對(duì)應(yīng)key的value json_object_object_get_ex(jobj, "key", &jvalue); // 將value轉(zhuǎn)為字符串 const char* value_str = json_object_get_string(jvalue);
當(dāng)C語(yǔ)言需要將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中時(shí),也可以使用libjson-c將其轉(zhuǎn)化為JSON格式后,再存儲(chǔ)到數(shù)據(jù)庫(kù)中。
// 創(chuàng)建JSON對(duì)象 json_object* jobj = json_object_new_object(); // 向JSON對(duì)象中添加鍵值對(duì) json_object_object_add(jobj, "key", json_object_new_int(value)); // 將JSON對(duì)象轉(zhuǎn)為字符串 const char* json_str = json_object_to_json_string(jobj); // 將JSON字符串存儲(chǔ)到數(shù)據(jù)庫(kù)中 sqlite3_exec(db, "INSERT INTO table_name (column_name) VALUES (json_str)", NULL, NULL, NULL);