将 QMap 转换为 JSON
Convert QMap to JSON
我有一个 QMap 对象,我想将它转换为 JSON。我很困惑我将如何做到这一点。
我阅读了 QT 文档说我可以使用 QDataStream 将 QMap 转换为 JSON,但 QDataStream 似乎转换文件:http://doc.qt.io/qt-4.8/datastreamformat.html
// c++
QMap<QString, int> myMap;
如果您使用的是 Qt 5.5 或更高版本,您可以使用 QJsonDocument::fromVariant, your map could be converted easily to a QVariantMap. If not, try QJson
为了您的目的,您正在寻找 QMAP 序列化,请参阅此 link:Serialization Qt. Try to set up the constructor with a QByteArray,如下所示:
QByteArray serializeMap(const QMap<QString, int>& map) {
QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
out << map;
return out;
}
也就是说,将在 QByteArray 中序列化您的地图,它可以很容易地转换为 QString 或 std::string。
将地图转换为 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::fromVariant()
静态方法创建 QJsonObject
。尽管对于 QJsonObject
您可以跳过转换为变体映射的步骤并在迭代映射时简单地手动填充对象:
QMap<QString, int> myMap;
QJsonObject json;
QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
i.next();
json.insert(i.key(), i.value());
}
我有一个 QMap 对象,我想将它转换为 JSON。我很困惑我将如何做到这一点。
我阅读了 QT 文档说我可以使用 QDataStream 将 QMap 转换为 JSON,但 QDataStream 似乎转换文件:http://doc.qt.io/qt-4.8/datastreamformat.html
// c++
QMap<QString, int> myMap;
如果您使用的是 Qt 5.5 或更高版本,您可以使用 QJsonDocument::fromVariant, your map could be converted easily to a QVariantMap. If not, try QJson
为了您的目的,您正在寻找 QMAP 序列化,请参阅此 link:Serialization Qt. Try to set up the constructor with a QByteArray,如下所示:
QByteArray serializeMap(const QMap<QString, int>& map) {
QByteArray buffer;
QDataStream stream(&buffer, QIODevice::WriteOnly);
out << map;
return out;
}
也就是说,将在 QByteArray 中序列化您的地图,它可以很容易地转换为 QString 或 std::string。
将地图转换为 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::fromVariant()
静态方法创建 QJsonObject
。尽管对于 QJsonObject
您可以跳过转换为变体映射的步骤并在迭代映射时简单地手动填充对象:
QMap<QString, int> myMap;
QJsonObject json;
QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
i.next();
json.insert(i.key(), i.value());
}