#json #qt #qt5
#json #qt #qt5
Вопрос:
Цель моего кода — записать журнал в формате json с отметкой времени эпохи.
Я ожидаю, что мой журнал записи кода будет таким, как показано ниже.
{234231412:{"user":"alex", "device":"HD-3432", "action":"connectin to server}}
Вот мой код, который не удалось собрать.
void writeLog(const QJsonObject amp;jsonLog) {
qint64 timestamp = QDateTime::currentSecsSinceEpoch();
QString strTimestamp = QString::number(timestamp);
QJsonObject jsonObj[strTimestamp] = jsonLog;
QJsonDocument log(jsonObj);
static QFile f(FireRest::logFile);
if (!f.isOpen()) {
f.open(QIODevice::WriteOnly | QIODevice::Append);
}
static QTextStream ts(amp;f);
QString t;
t.sprintf("%sn", log.toString());
ts << t << endl;
QString fpo(logFile QString(".old"));
if (f.size() > MAX_LOG_FILE_SIZE) {
f.close();
QFile::remove(fpo);
QFile::rename(logFile, fpo);
}
}
QJsonObject jsonObj[strTimestamp] = jsonLog;
делает размер массива нецелым типом ‘QString’
QJsonDocument log(jsonObj);
делает переменную с неполным типом ‘QJsonDocument’
Как я могу это исправить?
Ответ №1:
Выглядит как эта строка
QJsonObject jsonObj[strTimestamp] = jsonLog;
означает , что вы создаете массив QJsonObject
.
Попробуйте создать экземпляр QJsonObject
, а затем присвоить свойство strTimestamp
QJsonObject jsonObj;
jsonObj[strTimestamp] = jsonLog;
Комментарии:
1. И добавьте
#include <QJsonDocument>
, чтобы исправить вторую ошибку.