//读取Json文件并解析
bool JsonReader::JsonLoad(const QString& fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << "Json文件打开失败!";
return false;
}
else
{
qDebug() << "Json文件打开成功!";
}
QString data = file.readAll();
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson(data.toUtf8(), &err); //对data进行解析
if(err.error != QJsonParseError::NoError)
{
qDebug() << "Json格式错误";
return false;
}
m_data = doc.object();
QStringList keys = m_data.keys();
QSqlQuery query;
//创建表
if (!query.exec("CREATE TABLE IF NOT EXISTS BoardInfo (Board_name TEXT, x NUMERIC, y NUMERIC, z NUMERIC, x0 NUMERIC, y0 NUMERIC, z0 NUMERIC)")) {
qDebug() << "Error: Failed to create table.";
return false;
} else {
qDebug() << "Table created successfully.";
}
//将json文件导入数据库
foreach (const QString &key, keys) {
QJsonValue jsonValue = m_data[key];
if (jsonValue.isObject()) {
QJsonObject object = jsonValue.toObject();
QString objectName = key;
qDebug() << objectName;
QString x = QString::number(object.value("x").toDouble());
QString y = QString::number(object.value("y").toDouble());
QString z = QString::number(object.value("z").toDouble());
QString x0 = QString::number(object.value("x0").toDouble());
QString y0 = QString::number(object.value("y0").toDouble());
QString z0 = QString::number(object.value("z0").toDouble());
query.prepare("INSERT INTO BoardInfo (board_name, x, y, z, x0, y0, z0) VALUES (:objectName, :x, :y, :z, :x0, :y0, :z0)");
query.bindValue(":objectName", objectName);
query.bindValue(":x", x);
query.bindValue(":y", y);
query.bindValue(":z", z);
query.bindValue(":x0", x0);
query.bindValue(":y0", y0);
query.bindValue(":z0", z0);
if(!query.exec())
{
qDebug() << "插入失败: " << query.lastError();
return false;
}else {
qDebug() << "插入成功";
}
}
}
return true;
}
//加载json文件
JsonReader::instance()->JsonLoad("E:/QtWidget_test/GL_test/src/BoardPlace.json");
将json文件导入数据库
最新推荐文章于 2024-05-15 10:46:25 发布