首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将QMap转换为JSON

将QMap转换为JSON
EN

Stack Overflow用户
提问于 2017-04-18 23:48:08
回答 2查看 11.2K关注 0票数 1

我有一个QMap对象,我想将它转换为JSON。我搞不懂怎么才能做到这一点。

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

代码语言:javascript
运行
复制
// c++
QMap<QString, int> myMap;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-19 05:35:35

最简单的方法是将映射转换为QVariantMap,它可以自动转换为JSON文档:

代码语言:javascript
运行
复制
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,您可以跳过转换到变体映射的步骤,只需在迭代映射时手动填充对象:

代码语言:javascript
运行
复制
QMap<QString, int> myMap;
QJsonObject json;

QMapIterator<QString, int> i(myMap);
while (i.hasNext()) {
    i.next();
    json.insert(i.key(), i.value());
}    
票数 12
EN

Stack Overflow用户

发布于 2017-04-19 00:29:47

如果您正在使用QT5.5或更高版本,您可以使用QJsonDocument:来自变奏曲,您的地图可以很容易地转换为一个QVariantMap。如果没有,请尝试QJson

为了达到您的目的,您正在寻找QMAP序列化,请参阅以下链接:串行化Qt。尝试使用QByteArray设置构造函数,如下所示:

代码语言:javascript
运行
复制
   QByteArray serializeMap(const QMap<QString, int>& map) {
      QByteArray buffer;
      QDataStream stream(&buffer, QIODevice::WriteOnly);
      out << map;
      return out;
   }

也就是说,在QByteArray中序列化您的映射可以很容易地转换为QString或std::string。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43484007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档