QJsonObject是Qt提供的一个类,它可以封装一个JSON对象。JSON对象是一种数据格式,它可以表示一组键值对,键是字符串,值可以是不同类型的JSON值。
要使用QJsonObject,需要包含<QJsonObject>头文件,并创建一个QJsonObject对象。可以使用不同的方式来初始化和修改QJsonObject对象,比如:
- 使用花括号和冒号来直接构造一个QJsonObject对象,类似于JavaScript的对象字面量。
- 使用insert()函数或者[]运算符来往QJsonObject对象中插入一个键值对。
- 使用remove()函数或者take()函数来从QJsonObject对象中删除一个键值对。
- 使用contains()函数或者find()函数来判断QJsonObject对象中是否包含某个键。
- 使用value()函数或者[]运算符来从QJsonObject对象中获取某个键对应的值。
- 使用keys()函数来获取QJsonObject对象中所有键的列表。
下面是一个使用QJsonObject的示例代码:
#include <QJsonObject>
#include <QDebug>
int main()
{
// 使用花括号和冒号直接构造一个QJsonObject对象
QJsonObject obj {
{"name", "Alice"},
{"age", 20},
{"gender", "female"}
};
// 打印结果
qDebug() << obj;
// 输出:
/*
QJsonObject({"age":20,"gender":"female","name":"Alice"})
*/
// 使用insert()函数往QJsonObject对象中插入一个键值对
obj.insert("hobby", "reading");
// 打印结果
qDebug() << obj;
// 输出:
/*
QJsonObject({"age":20,"gender":"female","hobby":"reading","name":"Alice"})
*/
// 使用[]运算符往QJsonObject对象中插入一个键值对
obj["city"] = "New York";
// 打印结果
qDebug() << obj;
// 输出:
/*
QJsonObject({"age":20,"city":"New York","gender":"female","hobby":"reading","name":"Alice"})
*/
// 使用remove()函数从QJsonObject对象中删除一个键值对
obj.remove("gender");
// 打印结果
qDebug() << obj;
// 输出:
/*
QJsonObject({"age":20,"city":"New York","hobby":"reading","name":"Alice"})
*/
// 使用take()函数从QJsonObject对象中删除一个键值对,并获取它的值
QJsonValue value = obj.take("hobby");
// 打印结果
qDebug() << obj;
qDebug() << value;
// 输出:
/*
QJsonObject({"age":20,"city":"New York","name":"Alice"})
QJsonValue(string, "reading")
*/
// 使用contains()函数判断QJsonObject对象中是否包含某个键
bool hasName = obj.contains("name");
// 打印结果
qDebug() << hasName;
// 输出:
/*
true
*/
// 使用find()函数判断QJsonObject对象中是否包含某个键,并获取它的迭代器
auto it = obj.find("age");
if (it != obj.end()) {
qDebug() << it.key() << ":" << it.value();
}
// 输出:
/*
"age" : QJsonValue(double, 20)
*/
// 使用value()函数从QJsonObject对象中获取某个键对应的值
QJsonValue name = obj.value("name");
// 打印结果
qDebug() << name;
// 输出:
/*
QJsonValue(string, "Alice")
*/
// 使用[]运算符从QJsonObject对象中获取某个键对应的值
QJsonValue city = obj["city"];
// 打印结果
qDebug() << city;
// 输出:
/*
QJsonValue(string, "New York")
*/
// 使用keys()函数获取QJsonObject对象中所有键的列表
QStringList keys = obj.keys();
// 打印结果
qDebug() << keys;
// 输出:
/*
("age", "city", "name")
*/
}
```