如何在Qt中将json数据附加到现有的json文件中

srs

我正在创建.json文件,并且试图将新数据附加到json文件中。为此,我调用了添加文件而不是只写文件,但是在控制台上出现错误“加载JSON时出错:“文档末尾的垃圾” @ 548”如何添加json文件?

/*-------------Write data into files ------------*/
void addLogs(QString flightType, QString flightTextLogs){
QFile file("FlightNotifications.json"); // json file
file.open(QFile::WriteOnly ); // Append
QJsonObject m_projectDetails;

qint64 qiTimestamp=QDateTime::currentMSecsSinceEpoch();
QDateTime dt;
dt.setTime_t(qiTimestamp/1000);
m_projectDetails.insert("Type", flightType);
m_projectDetails.insert("TextLog", flightTextLogs);
m_projectDetails.insert("Date and Time",dt.toString("yyyy-MM-dd hh:mm:ss"));

rootObject.insert("Notifications",m_projectDetails);

rootObject1.append(rootObject);
QJsonDocument doc1(rootObject1);
file.write(doc1.toJson());
file.close();
}


 /*--------------- Read json file-----------------*/
 void readFlightLogs(){
qDebug()<<"Read data";
QByteArray val;
QFile file("FlightNotifications.json");
if(file.exists())
{
    file.open(QIODevice:: ReadOnly | QIODevice::Text);
    val = file.readAll();
    file.close();

     QJsonParseError jspe{};
    const QJsonDocument doc = QJsonDocument::fromJson(val, &jspe);
     if (doc.isNull())
    {
        qWarning() << "Error loading JSON:" << jspe.errorString() << "@" << jspe.offset;

    }
    QJsonArray jsonArray = doc.array();

    if(jsonArray.size()<1)
    {
    }
    for (int i=0; i < jsonArray.size(); i++)
    {
      QJsonObject temp = jsonArray.at(i).toObject();
      FlightNotificationList ::getInstance()-> addAsset(temp.value("Notifications").toObject().value("Type").toString(),
                        temp.value("Notifications").toObject().value("TextLog").toString(),
                         temp.value("Notifications").toObject().value("Date and Time").toString(),
                        "name");
       qDebug() << temp.value("Notifications").toObject().value("Type").toString();
       qDebug() <<  temp.value("Notifications").toObject().value("TextLog").toString();
       qDebug() <<  temp.value("Notifications").toObject().value("Date and Time").toString();
  }
}
}

当我使用QFile :: WriteOnly时,文件被覆盖。如何附加.json文件

钨丝

您应该加载整个json数组内容,插入新项,然后将json数组重写到磁盘。

addLogs函数可以重写为:

/*-------------Write data into files ------------*/
bool addLogs(QString flightType, QString flightTextLogs){

    QFile file("FlightNotifications.json"); // json file
    if( !file.open( QIODevice::ReadOnly ) ) //read json content
    {
        //open file error ...
        return false;
    }

    QJsonDocument jsonOrg = QJsonDocument::fromJson( file.readAll() );
    file.close();

    //local variable, do not use m_ prefix.
    QJsonObject projectDetails = { {"Type", flightType},
                                   {"TextLog", flightTextLogs},
                                   {"Date and Time", QDateTime::currentDateTime().toString( "yyyy-MM-dd hh:mm:ss" )} };

    QJsonObject notificationObj =  {{ "Notifications", projectDetails }};

    QJsonArray arrLog = jsonOrg.array();
    arrLog.push_back( notificationObj );

    QJsonDocument doc( arrLog );

    if( !file.open( QIODevice::WriteOnly ) ) //write json content to file.
    {
        //cannot open for write ...
        return false;
    }

    file.write(doc.toJson());
    file.close();

    return true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据附加到现有的 json 文件

来自分类Dev

如何在Django中将额外的数据附加到现有的序列化器

来自分类Dev

如何在node.js中添加到现有的json文件

来自分类Dev

使用PHP将新对象附加到外部JSON文件中现有的数组

来自分类Dev

如何使用Python将数据附加到现有的AVRO文件中

来自分类Dev

如何将数据附加到现有的Excel文件中?

来自分类Dev

如何在Android中将数据添加到现有的.txt文件

来自分类Dev

如何在 C# 中将文本附加到所有现有的 .txt 文档?

来自分类Dev

如何在ruby中将字符串值附加到现有的列值?

来自分类Dev

使用PHP,如何将JSON Blob附加到现有的多级JSON对象

来自分类Dev

使用PHP,如何将JSON Blob附加到现有的多级JSON对象

来自分类Dev

如何通过php脚本将项目添加到现有的json文件中

来自分类Dev

是否可以将csv文件中的数据附加到现有的mysql表中

来自分类Dev

是否可以将csv文件中的数据附加到现有的mysql表中

来自分类Dev

如何将数据附加到现有的LMDB?

来自分类Dev

如何在Python中将密钥项附加到.json文件?

来自分类Dev

如何将数据附加到现有的Dropbox文件?

来自分类Dev

如何将数据附加到现有的Dropbox文件?

来自分类Dev

如何将数据附加到现有的 Dropbox 文件?(API v2)

来自分类Dev

如何将Newman htmlextra结果附加到现有的htmlextra报告文件中

来自分类Dev

如何在bash中的循环内附加到现有的字符串变量?

来自分类Dev

如何在swift 4中将数据附加到数组类型的JSON值

来自分类Dev

如何在现有的json11对象(C ++)上附加属性值对?

来自分类Dev

如何将json数据附加到文件中?

来自分类Dev

如何将数组的新属性添加到现有的json数据

来自分类Dev

如何将列表添加到现有的json文件?

来自分类Dev

如何使用json数据python更新现有的json文件

来自分类Dev

如何从现有的JSON文件添加新的JSON

来自分类Dev

如何从现有的JSON文件添加新的JSON

Related 相关文章

  1. 1

    将数据附加到现有的 json 文件

  2. 2

    如何在Django中将额外的数据附加到现有的序列化器

  3. 3

    如何在node.js中添加到现有的json文件

  4. 4

    使用PHP将新对象附加到外部JSON文件中现有的数组

  5. 5

    如何使用Python将数据附加到现有的AVRO文件中

  6. 6

    如何将数据附加到现有的Excel文件中?

  7. 7

    如何在Android中将数据添加到现有的.txt文件

  8. 8

    如何在 C# 中将文本附加到所有现有的 .txt 文档?

  9. 9

    如何在ruby中将字符串值附加到现有的列值?

  10. 10

    使用PHP,如何将JSON Blob附加到现有的多级JSON对象

  11. 11

    使用PHP,如何将JSON Blob附加到现有的多级JSON对象

  12. 12

    如何通过php脚本将项目添加到现有的json文件中

  13. 13

    是否可以将csv文件中的数据附加到现有的mysql表中

  14. 14

    是否可以将csv文件中的数据附加到现有的mysql表中

  15. 15

    如何将数据附加到现有的LMDB?

  16. 16

    如何在Python中将密钥项附加到.json文件?

  17. 17

    如何将数据附加到现有的Dropbox文件?

  18. 18

    如何将数据附加到现有的Dropbox文件?

  19. 19

    如何将数据附加到现有的 Dropbox 文件?(API v2)

  20. 20

    如何将Newman htmlextra结果附加到现有的htmlextra报告文件中

  21. 21

    如何在bash中的循环内附加到现有的字符串变量?

  22. 22

    如何在swift 4中将数据附加到数组类型的JSON值

  23. 23

    如何在现有的json11对象(C ++)上附加属性值对?

  24. 24

    如何将json数据附加到文件中?

  25. 25

    如何将数组的新属性添加到现有的json数据

  26. 26

    如何将列表添加到现有的json文件?

  27. 27

    如何使用json数据python更新现有的json文件

  28. 28

    如何从现有的JSON文件添加新的JSON

  29. 29

    如何从现有的JSON文件添加新的JSON

热门标签

归档