qt遍历QJsonObject中每个键值对,并获取每一个key和value
时间: 2024-03-23 10:39:22 浏览: 576
可以使用QJsonObject::iterator和QJsonValue来遍历QJsonObject中的每个键值对,具体代码如下:
```
QJsonObject obj;
// 假设已经将一些键值对添加到了obj中
// 遍历obj中的键值对
for (QJsonObject::iterator iter = obj.begin(); iter != obj.end(); ++iter)
{
// 获取key和value
QString key = iter.key();
QJsonValue value = iter.value();
// 对value进行相应的操作,比如判断类型并获取其值
if (value.isString())
{
QString strValue = value.toString();
// ...
}
else if (value.isBool())
{
bool boolValue = value.toBool();
// ...
}
// ...
}
```
以上代码中,使用QJsonObject::iterator来遍历obj中的每个键值对,使用iter.key()和iter.value()获取每个键值对的key和value,然后根据value的类型进行相应的操作。
相关问题
qt QJsonObject遍历取值
可以使用 QJsonObject 的 keys() 函数获取 JSON 对象中包含的所有键名,然后使用 value() 函数获取对应键名的值。例如:
```c++
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
#include <QtCore/QJsonObject>
#include <QtCore/QJsonDocument>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString jsonStr = "{\"name\":\"Alice\", \"age\":22, \"gender\":\"female\"}";
QJsonObject jsonObj = QJsonDocument::fromJson(jsonStr.toUtf8()).object();
foreach(const QString& key, jsonObj.keys()) {
qDebug() << key << ": " << jsonObj.value(key).toString();
}
return a.exec();
}
```
输出结果为:
```
"name" : "Alice"
"age" : "22"
"gender" : "female"
```
qt QJsonObject多层遍历取值
可以使用QJsonObject的keys()方法获取所有的key,并通过循环获取每个key对应的value。如果value是QJsonObject类型,可以递归调用该方法。示例代码如下:
```cpp
// jsonObject为要遍历的QJsonObject对象
void traverseJsonObject(QJsonObject jsonObject) {
QStringList keys = jsonObject.keys(); // 获取所有key
foreach(QString key, keys) {
QJsonValue value = jsonObject.value(key); // 根据key获取对应的value
if(value.isObject()) { // 如果value是QJsonObject类型
traverseJsonObject(value.toObject()); // 递归调用
} else {
// 处理value
qDebug() << key << ":" << value.toString();
}
}
}
```
调用该方法:
```cpp
QJsonObject jsonObject = {{"name", "Tom"},{"age", 20},{"info", {{"address", "Beijing"},{"email", "tom@qq.com"}}}};
traverseJsonObject(jsonObject);
```
输出:
```
name : "Tom"
age : 20
address : "Beijing"
email : "tom@qq.com"
```
阅读全文