QT中的QVariantMap Json解析

Posted

技术标签:

【中文标题】QT中的QVariantMap Json解析【英文标题】:QVariantMap Json Parsing in QT 【发布时间】:2010-09-15 11:00:49 【问题描述】:

我正在使用以下代码进行解析:

QJson::Parser parser;
bool ok;
QVariantMap result=parser.parse (cityReply->readAll(),&ok).toMap();
if (!ok)

    qFatal("An error occurred during parsing");
    exit (1);


foreach (QVariant city, result.toList())

    QVariantMap names = city.toMap();
    qDebug() << "\t-" << names["name"].toString();

我的 json 字符串是["id":2,"name":"AAA","id":1,"name":"BBB"]

我收到以下错误:

“QVariantMap 类”没有名为“toList”的成员。

是否可以将 QMap 转换为 QList?

【问题讨论】:

【参考方案1】:

result 包含一个序列化数组QVariant。您需要在调用toList() 函数之前将其提取出来。由于数组未在 Json 字符串中命名,因此您可以通过获取地图中的第一个 QVariant 并执行您在问题中所写的操作来访问它。

【讨论】:

对不起..你能解释一下吗? 关于Json字符串,QVariantMap只包含一个元素:数组。只需使用 QMap 函数获取它,然后将其转换为列表 @PatriceBernassola 您能否按照答案中的建议使用 QMap 从数组中提取代码示例?我是这个 api 的新手并且有类似的问题。我的代码与上面类似,但我的 json 也包含一个数组名称,即 ["chan":"id":1, "name":"one","chan":"id": 2,"名称":"两个"] QJson官方文档提供了每种序列化数据的代码示例:qjson.sourceforge.net/usage。检查 plugins 数组是如何反序列化的。

以上是关于QT中的QVariantMap Json解析的主要内容,如果未能解决你的问题,请参考以下文章

qt解析json汉字和数字一起的时候提示数据错误

如何在 qt 4.8 中通过 dbus 接收 QList<QVariantMap>?

QT如何解析数组json中的对象

智能语音生活助手实现(QT)

javascript的JSON对象

Qt Json解析c ++