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解析的主要内容,如果未能解决你的问题,请参考以下文章