我有一个QMap对象,我想将它转换为JSON。我搞不懂怎么才能做到这一点。
我阅读了QT文档,说明我可以使用QDataStream将QMap转换为JSON,但QDataStream似乎将文件转换为:http://doc.qt.io/qt-4.8/datastreamformat.html
// c++
QMap<QString, int> myMap;
发布于 2017-04-19 05:35:35
最简单的方法是将映射转换为QVariantMap
,它可以自动转换为JSON文档:
QMap<QString, int> myMap;
QVariantMap vmap;
QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
i.next();
vmap.insert(i.key(), i.value());
}
QJsonDocument json = QJsonDocument::fromVariant(vmap);
如果需要,可以通过QJsonObject
静态方法使用相同的方法来创建QJsonObject::fromVariant()
。尽管对于QJsonObject
,您可以跳过转换到变体映射的步骤,只需在迭代映射时手动填充对象:
QMap<QString, int> myMap;
QJsonObject json;
QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
i.next();
json.insert(i.key(), i.value());
}
发布于 2017-04-19 00:29:47
如果您正在使用QT5.5或更高版本,您可以使用QJsonDocument:来自变奏曲,您的地图可以很容易地转换为一个QVariantMap。如果没有,请尝试QJson
为了达到您的目的,您正在寻找QMAP序列化,请参阅以下链接:串行化Qt。尝试使用QByteArray设置构造函数,如下所示:
QByteArray serializeMap(const QMap<QString, int>& map) {
QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
out << map;
return out;
}
也就是说,在QByteArray中序列化您的映射可以很容易地转换为QString或std::string。
https://stackoverflow.com/questions/43484007
复制相似问题