Создание ключа QJsonObject из метки времени

#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> , чтобы исправить вторую ошибку.