Use Base64 encoding for BLOBs in JSON export (#1413)

This commit is contained in:
Justin Clift
2018-06-07 12:39:58 +01:00
committed by Martin Kleusberg
parent 4c368b305b
commit 6466aac5ea
+11 -3
View File
@@ -11,6 +11,7 @@
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QTextCodec>
ExportDataDialog::ExportDataDialog(DBBrowserDB& db, ExportFormats format, QWidget* parent, const QString& query, const sqlb::ObjectIdentifier& selection)
: QDialog(parent),
@@ -237,14 +238,21 @@ bool ExportDataDialog::exportQueryJson(const QString& sQuery, const QString& sFi
json_row.insert(column_names[i], QJsonValue());
break;
}
case SQLITE_TEXT:
case SQLITE_BLOB: {
case SQLITE_TEXT: {
QString content = QString::fromUtf8(
(const char*)sqlite3_column_blob(stmt, i),
(const char*)sqlite3_column_text(stmt, i),
sqlite3_column_bytes(stmt, i));
json_row.insert(column_names[i], content);
break;
}
case SQLITE_BLOB: {
QByteArray content((const char*)sqlite3_column_blob(stmt, i),
sqlite3_column_bytes(stmt, i));
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString string = codec->toUnicode(content.toBase64(QByteArray::Base64Encoding));
json_row.insert(column_names[i], string);
break;
}
}
}
json_table.push_back(json_row);