首页 > 解决方案 > 从时间戳制作 QJsonObject 的密钥

问题描述

我的代码的目的是将日志写入带有纪元时间戳的 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'

我该如何解决?

标签: jsonqtqt5

解决方案


看起来像这条线

QJsonObject jsonObj[strTimestamp] = jsonLog;

表示您正在创建一个QJsonObject.

尝试创建实例QJsonObject然后分配属性strTimestamp

QJsonObject jsonObj;
jsonObj[strTimestamp] = jsonLog;

推荐阅读