qt QJsonObject遍历取值
时间: 2023-11-14 21:06:15 浏览: 173
可以使用 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"
```
QT Qmap 遍历
QMap是Qt框架中提供的一种基于红黑树实现的容器,用于存储键值对。它保证了键的唯一性,并且可以根据键值快速检索对应的值。在遍历QMap时,通常可以使用几种不同的方式来访问其元素:
1. 使用迭代器遍历QMap:
```cpp
QMap<Key, Value> map;
QMap<Key, Value>::const_iterator i;
for (i = map.constBegin(); i != map.constEnd(); ++i) {
// 访问每个键值对
Key key = i.key();
Value value = i.value();
// 可以在这里处理每个键值对
}
```
2. 使用foreach遍历QMap:
```cpp
QMap<Key, Value> map;
for (const Key &key : map) {
// 访问每个键,并通过键查找对应的值
Value value = map[key];
// 可以在这里处理每个键值对
}
```
3. 使用QMap的`begin()`和`end()`函数结合迭代器遍历:
```cpp
QMap<Key, Value> map;
QMap<Key, Value>::iterator i;
for (i = map.begin(); i != map.end(); ++i) {
// 访问每个键值对
// 同第一种方式
}
```
4. 使用`QMap::keys()`和`QMap::values()`函数分别获取所有键和所有值,然后进行遍历:
```cpp
QMap<Key, Value> map;
QList<Key> keys = map.keys();
for (const Key &key : keys) {
Value value = map.value(key);
// 可以在这里处理每个键值对
}
```
以上是遍历QMap的主要方法,每种方法各有特点,适用于不同的场景。