要將JSON數據存儲到數據庫,你可以使用C++中的數據庫連接庫來實現,如MySQL Connector/C++或SQLite C/C++ Interface。
下面是一種將JSON數據存儲到MySQL數據庫的示例代碼:
```cpp
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int main() {
try {
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
// 創建MySQL連接
driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "username", "password");
// 選擇數據庫
con->setSchema("database_name");
// 準備JSON數據
Json::Value json;
json["name"] = "John";
json["age"] = 30;
json["city"] = "New York";
// 插入JSON數據
sql::PreparedStatement *stmt;
stmt = con->prepareStatement("INSERT INTO table_name (json_data) VALUES (?)");
stmt->setString(1, json.toStyledString());
stmt->execute();
delete stmt;
// 查詢數據庫中的JSON數據
sql::Statement *query;
sql::ResultSet *res;
query = con->createStatement();
res = query->executeQuery("SELECT * FROM table_name");
while (res->next()) {
Json::Value result;
Json::Reader reader;
reader.parse(res->getString("json_data"), result);
cout << "Name: " << result["name"].asString() << endl;
cout << "Age: " << result["age"].asInt() << endl;
cout << "City: " << result["city"].asString() << endl;
}
delete res;
delete query;
delete con;
} catch (sql::SQLException &e) {
cout << "MySQL Error: " << e.what() << endl;
}
return 0;
}
```
注意替換代碼中的`username`、`password`、`database_name`和`table_name`為你實際的數據庫信息。這個示例代碼使用MySQL數據庫和JSONcpp庫來處理JSON數據,你還需要下載并安裝相應的庫。
上述代碼的思路是將JSON數據轉換為字符串并存儲到數據庫中的一個字段中,然后在查詢時再將字符串轉換為JSON對象進行解析和處理。你可以根據實際需求進行調整和修改。