QT中的QVariantMap JSON解析

3
我将使用以下代码进行解析:

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

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"}]

我得到了以下错误:

'class QVariantMap'没有名为'toList'的成员。

是否可以将QMap转换为QList?

1个回答

3

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


抱歉..您能否再解释一下? - Finder
2
关于Json字符串,QVariantMap只包含一个元素:数组。只需使用QMap函数获取它,然后将其转换为列表即可。 - Patrice Bernassola
@PatriceBernassola,您能否请提供一个使用QMap从数组中提取数据的代码示例,就像答案中建议的那样?我对这个API还很陌生,但我有类似的问题。我的代码与上面的代码类似,唯一的区别是我的JSON也包含一个数组名称,即[{"chan":{"id":1, "name":"one"}},{"chan":{"id":2,"name":"two"}}]。 - fkl
QJson官方文档为每种序列化数据提供了代码示例:http://qjson.sourceforge.net/usage/。请查看如何反序列化插件数组。 - Patrice Bernassola

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接