遇到一个比较奇怪的问题,找不到原因,请教下~
贴一小段代码比较清楚:
QJsonObject mainObj = myProJsonDoc.object();
QJsonObject modulesObj = mainObj.take(QLatin1String("modules")).toObject();
modulesObj.remove(QString::number(tempItem->moduleID));
qDebug()<<modulesObj;
qDebug()<<mainObj;
mainObj.insert(QLatin1String("modules"),modulesObj);
qDebug()<<mainObj<<(QJsonValue)modulesObj;
这种情况下有些时候程序会报segmentation false错,有些时候会有输出,但是输出是错的:
QJsonObject({"0":{"info":"balabala..","input":{"0":""},"name":"test1","output":{"0":""}}})
QJsonObject({})
QJsonObject({"modules":{"ƀ":null}}) QJsonValue(object, QJsonObject({"0":{"info":"balabala..","input":{"0":""},"name":"test1","output":{"0":""}}}) )
但是当把modulesObj.remove(QString::number(tempItem->moduleID));这句话除去的话,就所有输出都是正常的:
QJsonObject mainObj = myProJsonDoc.object();
QJsonObject modulesObj = mainObj.take(QLatin1String("modules")).toObject();
// modulesObj.remove(QString::number(tempItem->moduleID));
qDebug()<<modulesObj;
qDebug()<<mainObj;
mainObj.insert(QLatin1String("modules"),modulesObj);
qDebug()<<mainObj<<(QJsonValue)modulesObj;
输出:
QJsonObject({"0":{"info":"balabala..","input":{"0":""},"name":"test1","output":{"0":""}},"1":{"info":"balabala..","input":{"0":""},"name":"","output":{"0":""}}})
QJsonObject({})
QJsonObject({"modules":{"0":{"info":"balabala..","input":{"0":""},"name":"test1","output":{"0":""}},"1":{"info":"balabala..","input":{"0":""},"name":"","output":{"0":""}}}}) QJsonValue(object, QJsonObject({"0":{"info":"balabala..","input":{"0":""},"name":"test1","output":{"0":""}},"1":{"info":"balabala..","input":{"0":""},"name":"","output":{"0":""}}}) )
所以疑惑,为什么执行remove函数之后会有问题,这里实在想不通,请教一下。