Сделать ключ QJsonObject из метки времени - PullRequest
0 голосов
/ 04 апреля 2019

Цель моего кода - записать журнал в формате json с отметкой времени эпохи.

Я ожидаю, что мой код записи журнала, как показано ниже.

{234231412:{"user":"alex", "device":"HD-3432", "action":"connectin to server}}

Вот мой код, который не удалось собрать.

void writeLog(const QJsonObject &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(&f);
    QString t;
    t.sprintf("%s\n", 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 Ответ

1 голос
/ 04 апреля 2019

выглядит как эта строка

QJsonObject jsonObj[strTimestamp] = jsonLog;

означает, что вы создаете массив QJsonObject.

Попробуйте создать экземпляр QJsonObject, а затем назначьте свойство strTimestamp

QJsonObject jsonObj;
jsonObj[strTimestamp] = jsonLog;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...