网站设计师和ui设计师,备案网站查询网址,网上搞钱的野路子,长春网站建设 信赖吉网传媒Qt之JSON相关类介绍 QJsonDocument常用函数枚举类型 QJsonDocument::DataValidation枚举类型 QJsonDocument::JsonFormat构造函数静态函数成员函数示例 QJsonObject常用函数构造函数#xff1a;成员函数#xff1a; QJsonObject 与 QVariantMap 相互转换 QJsonArray常用函数构… Qt之JSON相关类介绍 QJsonDocument常用函数枚举类型 QJsonDocument::DataValidation枚举类型 QJsonDocument::JsonFormat构造函数静态函数成员函数示例 QJsonObject常用函数构造函数成员函数 QJsonObject 与 QVariantMap 相互转换 QJsonArray常用函数构造函数成员函数 QJsonArray与QVariantList相互转换将 QJsonArray 转换为 QVariantList将 QVariantList 转换为 QJsonArray QJsonDocument
QJsonDocument类提供了一种读取和写入JSON文档的方式。 QJsonDocument是一个包装完整JSON文档的类可以从以UTF-8编码的文本表示形式以及Qt自身的二进制格式读取和写入该文档。 可以使用QJsonDocument::fromJson()将基于文本的表示转换为QJsonDocument.toJson()将其转换回文本。解析器非常快速和高效并将JSON转换为Qt使用的二进制表示形式。 可以使用!isNull()查询已解析文档的有效性。 可以使用isArray()和isObject()查询文档是否包含数组或对象。可以使用array()或object()检索文档中包含的数组或对象然后进行读取或操作。 还可以使用fromBinaryData()或fromRawData()从存储的二进制表示创建文档。 成员类型文档
常用函数
枚举类型 QJsonDocument::DataValidation
此值用于告诉 QJsonDocument 在使用fromBinaryData()或 fromRawData() 将数据转换为QJsonDocument时是否验证二进制数据。
常量值描述QJsonDocument::Validate0在使用数据之前对其进行验证。这是默认值。QJsonDocument::BypassValidation1绕过数据验证。只有当您从可信来源收到数据并知道其有效时才使用因为使用无效数据可能会导致应用程序崩溃。
枚举类型 QJsonDocument::JsonFormat
此值将数据转换为 QJsonDocument 时生成的 JSON 字节数组的格式。
常量值描述QJsonDocument::Indented0定义可读性强的输出如下所示QJsonDocumentCompact1定义紧凑的输出如下所示
QJsonDocument::Indented格式 {Array: [true,999,string],Key: Value,null: null} QJsonDocumentCompact格式
{Array:[true,999,string],Key:Value,null:null} 构造函数
QJsonDocument()默认构造函数创建一个空的JSON文档。QJsonDocument(const QJsonObject object)使用给定的QJsonObject对象创建一个JSON文档。QJsonDocument(const QJsonArray array)使用给定的QJsonArray对象创建一个JSON文档。
静态函数
QJsonDocument::fromJson(const QByteArray json)将指定的JSON表示形式转换为QJsonDocument对象。QJsonDocument::fromVariant(const QVariant variant)将给定的QVariant对象转换为QJsonDocument对象。QJsonDocument::fromBinaryData(const QByteArray data, QJsonDocument::DataValidation validation QJsonDocument::Validate)从二进制数据创建一个QJsonDocument对象并可选择是否验证数据。QJsonDocument::fromRawData(const char* data, int size, QJsonDocument::DataValidation validation QJsonDocument::Validate)从原始二进制数据创建一个QJsonDocument对象并可选择验证数据。
成员函数
QJsonDocument::toJson(QJsonDocument::JsonFormat format QJsonDocument::Indented)将QJsonDocument对象转换为JSON表示形式的字节数组。QJsonDocument::toVariant()将QJsonDocument对象转换为QVariant对象。QJsonDocument::isEmpty()检查JSON文档是否为空。QJsonDocument::isNull()检查JSON文档是否为null。QJsonDocument::isArray()检查JSON文档是否为数组。QJsonDocument::isObject()检查JSON文档是否为对象。QJsonDocument::array()获取JSON文档中的数组。QJsonDocument::object()获取JSON文档中的对象。
示例
#include QCoreApplication
#include QJsonDocument
#include QJsonObject
#include QJsonArray
#include QDebugint main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建一个JSON文档QJsonObject object;object[name] John Doe;object[age] 25;QJsonArray hobbies;hobbies.append(reading);hobbies.append(music);object[hobbies] hobbies;QJsonDocument doc(object);// 将JSON文档转换为字符串表示形式QByteArray jsonBytes doc.toJson(QJsonDocument::Indented);QString jsonString QString::fromUtf8(jsonBytes);qDebug() JSON Document: jsonString;// 解析JSON文档QJsonDocument parsedDoc QJsonDocument::fromJson(jsonBytes);if(parsedDoc.isNull()){qDebug() Failed to parse JSON document.;return 0;}// 检查JSON文档是否为对象if(parsedDoc.isObject()){QJsonObject parsedObject parsedDoc.object();qDebug() Parsed JSON Object:;qDebug() Name: parsedObject[name].toString();qDebug() Age: parsedObject[age].toInt();qDebug() Hobbies:;QJsonArray parsedHobbies parsedObject[hobbies].toArray();for(const auto hobby : parsedHobbies){qDebug() - hobby.toString();}} else {qDebug() Parsed JSON document is not an object.;return 1;}return a.exec();
}在示例中创建了一个JSON文档其中含了一个包含姓名年龄和兴趣爱好的对象。 然后将该对象转换为JSON字符串表示形式并输出到控制台。 接下来使用QJsonDocument::fromJson()函数解析该JSON字符串将其转换为QJsonDocument对象。 最后检查解析的JSON文档是否为对象并打印出对象中的值。
示例展示了使用QJsonDocument类创建和解析JSON文档。可以根据需求修改和扩展代码。请注意示例中使用了Qt应用程序和处理事件循环。如果在不使用Qt框架的环境中使用QJsonDocument需要相应地修改代码。
QJsonObject
QJsonObject 类封装了一个JSON对象。JSON 对象是一个键值对列表其中键是唯一的字符串值由QJsonValue表示。QJsonObject 可以与 QVariantMap 相互转换。您可以使用size()查询键值对的数量使用insert()和remove()从中插入和删除条目并使用标准的 C 迭代器模式遍历其内容。QJsonObject 是一个隐式共享类只要不进行修改它就会与创建它的文档共享数据。您可以通过QJsonDocument将对象从基于文本的 JSON 转换出来和转换进去。
常用函数
构造函数
QJsonObject()默认构造函数创建一个空的JSON对象。QJsonObject(const QJsonObject other)拷贝构造函数根据另一个JSON对象创建一个新的JSON对象。
成员函数
bool isEmpty() const判断JSON对象是否为空如果对象中不包含任何属性则返回true否则返回false。int size() const返回JSON对象中属性的数量。bool contains(const QString key) const检查JSON对象中是否包含指定键。void insert(const QString key, const QJsonValue value)向JSON对象中插入一个键值对。void remove(const QString key)从JSON对象中移除指定键的属性。QJsonValue value(const QString key) const返回指定键对应的值。如果键不存在则返回QJsonValue()。QStringList keys() const返回JSON对象中所有键的列表。QJsonObject operator(const Q other)赋值运算符将另一个JSON对象属性复制到当前对象中。QJsonValue operator[](const QString key) const通过键访问JSON对象的属性值。
通过这些构造函数和成员函数可以创建JSON对象、添加、移除和访问对象的属性值并操作以及获取对象的相关信息。这些函数提供了便捷的方式来处理和操作JSON对象。
QJsonObject 与 QVariantMap 相互转换
在C中可以使用QJsonObject和QVariantMap之间的fromVariant()和toVariant()两个函数来实现相互转换。下面是一个示例
#include QCoreApplication
#include QJsonObject
#include QVariantMap
#include QDebugint main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建一个QJsonObjectQJsonObject jsonObject;jsonObject[name] John Doe;jsonObject[age] 25;jsonObject[isEmployed] true;// 将QJsonObject转换为QVariantMapQVariantMap variantMap jsonObject.toVariantMap();// 输出转换后的QVariantMap内容qDebug() QVariantMap:;qDebug() Name: variantMap[name].toString();qDebug() Age: variantMap[age].toInt();qDebug() Is Employed: variantMap[isEmployed].toBool();// 创建一个QVariantMapQVariantMap newVariantMap;newVariantMap[name] Jane Smith;newVariantMap[age] 30;newVariantMap[isEmployed] false;// 将QVariantMap转换为QJsonObjectQJsonObject newJsonObject QJsonObject::fromVariantMap(newVariantMap);// 输出转换后的QJsonObject内容qDebug() QJsonObject:;qDebug() Name: newJsonObject[name].toString();qDebug() Age: newJsonObject[age].toInt();qDebug() Is Employed: newJsonObject[isEmployed].toBool();return a.exec();
}在上述示例中创建了一个QJsonObject对象jsonObject并为其添加了一些键值对。 然后使用toVariantMap()函数将其转换为QVariantMap对象variantMap并输出其内容。 接下来创建了一个新的QVariantMap对象newVariantMap并为其添加了一些键值对。 最后使用QJsonObject的fromVariantMap()函数将newVariantMap转换回QJsonObject对象newJsonObject并输出其内容。
通过toVariantMap()和fromVariantMap()函数可以方便地在QJsonObject和QVariantMap之间进行转换并且可以在转换后访问和操作数据。这些函数是互相转换的可以根据需要在QJsonObject和QVariantMap之间进行双向转
QJsonArray
QJsonArray类封装了一个JSON数组。 QJsonArray可以与QVariantList相互转换。可以使用size()、insert()和removeAt()来查询数组中的条目数量并使用标准的C迭代器模式遍历其内容。 QJsonArray是一个隐式共享的类并且只要它没有被修改就与其创建的文档共享数据。 可以通过QJsonDocument将数组转换为基于文本的JSON也可以将文本转换为数组。
常用函数
QJsonArray是Qt框架中的一个类用于表示JSON数组。它提供了一组构造函数和一些常用的成员函数用于创建、操作和访问JSON数组的元素。下面是QJsonArray的构造函数和一些常用成员函数介绍
构造函数
QJsonArray()默认构造函数创建一个空的JSON数组QJsonArray(const QJsonArray other)拷贝构造函数根据另一个JSON数组创建一个新的JSON数组。QJsonArray(std::initializer_listQJsonValue list)使用初始化列表创建一个新的JSON数组。
成员函数
bool isEmpty() const判断JSON数组是否为空如果数组中不包含任何元素则返回true否则返回。int size() const返回JSON数组中元素的数量。void append(const QJsonValue value)向JSON数组末尾添加一个元素。void prepend(const QJsonValue value)在JSON数组开头插入一个元素。void insert(int index, const QJsonValue value)在指定位置插入一个元素。void removeAt(int index)移除指定位置的元素。QJsonValue at(int index) const返回指定位置的元素。QJsonValue operator[](int index) const通过索引访问JSON数组的元素。void replace(int index, const QJsonValue value)替换指定位置的元素。QVariantList toVariantList() const将JSON数组转换为QVariantList。QString toJson(QDocument::JsonFormat format QJsonDocument::Indented) const将JSON数组转换为文本形式的JSON。
通过这些构造函数和成员函数可以创建JSON数组、添加、移除和访数组的元素并操作以及获取数组的相关信息。
QJsonArray与QVariantList相互转换
以下是将 QJsonArray 转换为 QVariantList 和将 QVariantList 转换为 QJsonArray 相互转换示例。
将 QJsonArray 转换为 QVariantList
QJsonArray jsonArray;
jsonArray.append(10);
jsonArray.append(Hello);
jsonArray.append(false);QVariantList variantList jsonArray.toVariantList();在示例中创建一个 QJsonArray 对象 jsonArray然后向其中添加一些元素。使用 jsonArray 的 toVariantList() 函数将其转换为 QVariantList 对象 variantList。
将 QVariantList 转换为 QJsonArray
QVariantList variantList;
variantList 10 Hello false;QJsonArray jsonArray QJsonArray::fromVariantList(variantList);在示例中创建一个 QVariantList 对象 variantList并向其中添加一些元素。然后使用 QJsonArray 的静态函数 fromVariantList() 将 variantList 转换为 QJsonArray 对象 jsonArray。
通过这些示例可以在 QJsonArray 和 QVariantList 之间进行双向转换方便地在 JSON 数据和 QVariant 数据之间进行处理和传递。 文章转载自: http://www.morning.mtsgx.cn.gov.cn.mtsgx.cn http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn http://www.morning.hympq.cn.gov.cn.hympq.cn http://www.morning.qbrdg.cn.gov.cn.qbrdg.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.duqianw.com.gov.cn.duqianw.com http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn http://www.morning.zqwqy.cn.gov.cn.zqwqy.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.lggng.cn.gov.cn.lggng.cn http://www.morning.buyid.com.cn.gov.cn.buyid.com.cn http://www.morning.jwgmx.cn.gov.cn.jwgmx.cn http://www.morning.rzcmn.cn.gov.cn.rzcmn.cn http://www.morning.lqlc.cn.gov.cn.lqlc.cn http://www.morning.pqnps.cn.gov.cn.pqnps.cn http://www.morning.qfkxj.cn.gov.cn.qfkxj.cn http://www.morning.jnbsx.cn.gov.cn.jnbsx.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.2d1bl5.cn.gov.cn.2d1bl5.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.rlbg.cn.gov.cn.rlbg.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.ckwrn.cn.gov.cn.ckwrn.cn http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn http://www.morning.zphlb.cn.gov.cn.zphlb.cn http://www.morning.wjtxt.cn.gov.cn.wjtxt.cn http://www.morning.shxmr.cn.gov.cn.shxmr.cn http://www.morning.syhwc.cn.gov.cn.syhwc.cn http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn http://www.morning.grfhd.cn.gov.cn.grfhd.cn http://www.morning.nrtpb.cn.gov.cn.nrtpb.cn http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn http://www.morning.lsbjj.cn.gov.cn.lsbjj.cn http://www.morning.qbzdj.cn.gov.cn.qbzdj.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.ltqzq.cn.gov.cn.ltqzq.cn http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn http://www.morning.fylsz.cn.gov.cn.fylsz.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.bljcb.cn.gov.cn.bljcb.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.smggx.cn.gov.cn.smggx.cn http://www.morning.rfzzw.com.gov.cn.rfzzw.com http://www.morning.dmwbs.cn.gov.cn.dmwbs.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.whclz.cn.gov.cn.whclz.cn http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.gnghp.cn.gov.cn.gnghp.cn http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn http://www.morning.xhpnp.cn.gov.cn.xhpnp.cn http://www.morning.mwnch.cn.gov.cn.mwnch.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.hzryl.cn.gov.cn.hzryl.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.qtsks.cn.gov.cn.qtsks.cn http://www.morning.twpq.cn.gov.cn.twpq.cn http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn http://www.morning.wdhzk.cn.gov.cn.wdhzk.cn http://www.morning.npxcc.cn.gov.cn.npxcc.cn http://www.morning.bkwd.cn.gov.cn.bkwd.cn http://www.morning.gjqwt.cn.gov.cn.gjqwt.cn http://www.morning.rbxsk.cn.gov.cn.rbxsk.cn http://www.morning.kldtf.cn.gov.cn.kldtf.cn http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn http://www.morning.yxkyl.cn.gov.cn.yxkyl.cn http://www.morning.kwblwbl.cn.gov.cn.kwblwbl.cn http://www.morning.zzgkk.cn.gov.cn.zzgkk.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn http://www.morning.tnhqr.cn.gov.cn.tnhqr.cn http://www.morning.zthln.cn.gov.cn.zthln.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn