将QMap转换为JSON

Jon*_*Jon 1 c++ qt json qmap

我有一个QMap对象,我想将其转换为JSON.我很困惑如何实现这一目标.

我阅读QT文档说我可以使用QDataStream将QMap转换为JSON,但QDataStream似乎转换文件:http://doc.qt.io/qt-4.8/datastreamformat.html

// c++
QMap<QString, int> myMap;
Run Code Online (Sandbox Code Playgroud)

dte*_*ech 10

将地图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);
Run Code Online (Sandbox Code Playgroud)

QJsonObject通过QJsonObject::fromVariant()静态方法可以使用相同的东西创建一个if .虽然QJsonObject您可以跳过转换到变体映射步骤,只需在迭代地图时手动填充对象:

QMap<QString, int> myMap;
QJsonObject json;

QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
    i.next();
    json.insert(i.key(), i.value());
}    
Run Code Online (Sandbox Code Playgroud)