00. 目录01. QJsonObject类简介Header:#include <QJsonObject> qmake:QT += coreSince:Qt 5.0
QJsonObject类用于封装JSON对象。JSON对象是包含键值对的链表,其中键是唯一的字符串,其值由QJsonValue对象。 QJsonObject可以与QVariantMap相互转换,可以用size()来获得键值对的数目,insert()、remove()分别用来插入和删除pair。可以用标准C++的迭代器模式(iterator pattern)来迭代其内容。 QJsonObject是一个隐式共享的类,只要没有被改变过,QJsonObject会和创建它的document共享数据。 可以通过QJsonDocument将QJsonObject和文本格式相互转换。 02. 公有类型classconst_iteratorclassiteratortypedefConstIteratortypedefIteratortypedefkey_typetypedefmapped_typetypedefsize_type
03. 公有成员方法QJsonObject()QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)QJsonObject(const QJsonObject &other)QJsonObject(QJsonObject &&other)~QJsonObject()QJsonObject::iteratorbegin()QJsonObject::const_iteratorbegin() constQJsonObject::const_iteratorconstBegin() constQJsonObject::const_iteratorconstEnd() constQJsonObject::const_iteratorconstFind(const QString &key) constQJsonObject::const_iteratorconstFind(QLatin1String key) constboolcontains(const QString &key) constboolcontains(QLatin1String key) constintcount() constboolempty() constQJsonObject::iteratorend()QJsonObject::const_iteratorend() constQJsonObject::iteratorerase(QJsonObject::iterator it)QJsonObject::iteratorfind(const QString &key)QJsonObject::iteratorfind(QLatin1String key)QJsonObject::const_iteratorfind(const QString &key) constQJsonObject::const_iteratorfind(QLatin1String key) constQJsonObject::iteratorinsert(const QString &key, const QJsonValue &value)boolisEmpty() constQStringListkeys() constintlength() constvoidremove(const QString &key)intsize() constvoidswap(QJsonObject &other)QJsonValuetake(const QString &key)QVariantHashtoVariantHash() constQVariantMaptoVariantMap() constQJsonValuevalue(const QString &key) constQJsonValuevalue(QLatin1String key) constbooloperator!=(const QJsonObject &other) constQJsonObject &operator=(const QJsonObject &other)QJsonObject &operator=(QJsonObject &&other)booloperator==(const QJsonObject &other) constQJsonValueoperator[](const QString &key) constQJsonValueoperator[](QLatin1String key) constQJsonValueRefoperator[](const QString &key)QJsonValueRefoperator[](QLatin1String key)
04. 公有成员方法解析QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)使用键值对链表构建QJsonObject对象QJsonObject::QJsonObject(const QJsonObject &other)构建QJsonObject对象 iterator QJsonObject::begin()const_iterator QJsonObject::begin() const返回指向JSON对象的第一个元素的STL风格的迭代器const_iterator QJsonObject::constBegin() const返回指向JSON对象的第一个元素的const STL风格的迭代器const_iterator QJsonObject::constEnd() const返回SJON对象的最后一个元素后的位置的const STL风格的迭代器const_iterator QJsonObject::constFind(const QString &key) const返回一个指向键值对中键为key的元素的const迭代器bool QJsonObject::contains(const QString &key) const如果JSON对象中包含键key,返回trueint QJsonObject::size() constint QJsonObject::count() const返回JSON对象中键值对的数量bool QJsonObject::empty() constbool QJsonObject::isEmpty() const如果JSON对象为空,返回trueiterator QJsonObject::find(const QString &key)const_iterator QJsonObject::find(const QString &key) const返回指向JSON对象中键为key的键值对的迭代器[static] QJsonObject QJsonObject::fromVariantHash(const QVariantHash &hash)将hash转换为JSON对象[static] QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)将map转换为JSON对象iterator QJsonObject::insert(const QString &key, const QJsonValue &value)插入键为key,值为value的键值对,返回插入键值对的迭代器QStringList QJsonObject::keys() const返回JSON对象的所有键的链表void QJsonObject::remove(const QString &key)删除JSON对象中的keyQJsonValue QJsonObject::take(const QString &key)删除JSON对象中的键key,返回key对应的QJsonValueQVariantHash QJsonObject::toVariantHash() const将JSON对象转换为QVariantHashQVariantMap QJsonObject::toVariantMap() const将JSON对象转换为QVariantMapQJsonValue QJsonObject::value(const QString &key) const返回key对应的QJsonValue值
05. 参考示例简单的JSON对象 { "Cross Platform": true, "From": 1991, "Name": "Qt"}
生成比较简单,只需要用 QJsonObject 即可。 // 构建 JSON 对象QJsonObject json;json.insert("Name", "Qt");json.insert("From", 1991);json.insert("Cross Platform", true);// 构建 JSON 文档QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);qDebug() << strJson;
简单的JSON解析 QJsonParseError jsonError;// 转化为 JSON 文档QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError); // 解析未发生错误if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { if (doucment.isObject()) { // JSON 文档为对象 QJsonObject object = doucment.object(); // 转化为对象 if (object.contains("Name")) { // 包含指定的 key QJsonValue value = object.value("Name"); // 获取指定 key 对应的 value if (value.isString()) { // 判断 value 是否为字符串 QString strName = value.toString(); // 将 value 转化为字符串 qDebug() << "Name : " << strName; } } if (object.contains("From")) { QJsonValue value = object.value("From"); if (value.isDouble()) { int nFrom = value.toVariant().toInt(); qDebug() << "From : " << nFrom; } } if (object.contains("Cross Platform")) { QJsonValue value = object.value("Cross Platform"); if (value.isBool()) { bool bCrossPlatform = value.toBool(); qDebug() << "CrossPlatform : " << bCrossPlatform; } } }}
06. 附录官方参考文档
|