一流的锦州网站建设,青岛找网站建设公司,协会建设网站的目的,建设网站公司哪好概述: Qt中使用Json比较方便#xff0c;不像纯C需要导入CJson RapidJson JsonCpp等第三方的库#xff0c;主要使用到QJsonDocument、QJsonObject对象即可
1、如何构造一个json字符串 假如我们需要构造 {cmd:1001,data:{content不像纯C需要导入CJson RapidJson JsonCpp等第三方的库主要使用到QJsonDocument、QJsonObject对象即可
1、如何构造一个json字符串 假如我们需要构造 {cmd:1001,data:{content:05:00,type:1}} 这样的json串在Qt中应该这样编写代码
main.cpp
#include QApplication
#include QWidget
#include QDebug//cc-tools里面生成的动态库
#include CcJsonTool.hint main(int argc, char *argv[])
{auto cmd 1001;auto type 1;auto content 05:00;QVariantMap contentMap;contentMap[cmd] QString::number(cmd);QVariantMap dataMap;dataMap[type] type;dataMap[content] content;contentMap[data] dataMap;//使用工具构建CcJsonTool jsonTool;auto str jsonTool.toJsonFromVariantMap(contentMap);qDebug() jsonStr: str;}
CcJsonTool.h
#pragma once#include cc_tools_global_config.h#include QString
#include QObject
#include QVariantMapclass CCTOOLS_EXPORT CcJsonTool : public QObject
{Q_OBJECT
public:CcJsonTool(QObject* parent nullptr);~CcJsonTool();QString toJsonFromVariantMap(QVariantMap dataMap);bool ParseJsonFromString(const QString jsonData);
};
CcJsonTool.cpp
#include CcJsonTool.h#include QJsonDocument
#include QJsonObjectCcJsonTool::CcJsonTool(QObject* parent)
:QObject(parent)
{}CcJsonTool::~CcJsonTool()
{}QString CcJsonTool::toJsonFromVariantMap(QVariantMap dataMap)
{// dataMap: {cmd:1001,data:{content:05:00,type:1}}QByteArray command QJsonDocument(QJsonObject::fromVariantMap(dataMap)).toJson(QJsonDocument::Compact);return QString::fromUtf8(command);
}bool CcJsonTool::parseJsonFromString(const QString jsonData)
{// jsonData: {cmd:1001,data:{content:05:00,type:1}}QJsonParseError error;auto jsonDoc QJsonDocument::fromJson(jsonData.toUtf8(), error);if (error.error ! QJsonParseError::NoError){return false;}auto mapContent jsonDoc.object().toVariantMap();if (!mapContent.contains(cmd) || !mapContent.contains(data)){return false;}auto mapData mapContent[data].toMap();if (!mapData.contains(content)){return false;}auto cmd mapContent[cmd].toString().toUInt();if (cmd 1001){auto type mapData[type].toInt();auto content mapData[content];}return true;
}
2、解析一个Json字符串
main.cpp
#include QApplication
#include QWidget
#include QDebug//cc-tools里面生成的动态库
#include CcJsonTool.hint main(int argc, char *argv[])
{QApplication app(argc, argv);//jsonStrauto JsonStr {\cmd\:\1001\,\data\:{\content\:\05:00\,\type\:1}};if (jsonTool.parseJsonFromString(JsonStr)){qDebug() parse json str success;}else{qDebug() parse json str failed;}return app.exec();
}3、参考gitee仓库上的测试源码
CcQtApp: Qt测试demo