C++使用rapidjson读写json数据

一、背景

RapidJSON简介及使用_fengbingchun的博客-CSDN博客 

rapidjson是腾讯的高效C++ Json解析器,只有头文件,可跨平台使用

mirrors / Tencent / rapidjson · GitCode

二、读数据

使用rapidjson解析和组装json_youyicc的博客-CSDN博客

三、写数据

#include "rapidjson/document.h"
#include "rapidjson/error/en.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
#include "rapidjson/istreamwrapper.h"
#include "rapidjson/prettywriter.h"

//通过rapidjson生成json数据
QString QosMonitor::generateJsonDataByRapidJson(dataInfo& data) {
	rapidjson::StringBuffer json;
	rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(json);
	try {
		writer.StartObject();

		writer.String("500001");
		writer.StartArray();
		writer.StartObject();
		writer.String("name");
		writer.String(data.name.toStdString().c_str());
		writer.String("endpoint");
		writer.String(data.endpoint.toStdString().c_str());
		writer.String("remoteMac");
		writer.String(data.remoteMac.toStdString().c_str());
		writer.String("loginTime");
		writer.String(data.loginTime.toStdString().c_str());
		writer.String("logonNum");
		writer.String(data.logonNum.toStdString().c_str());
		writer.String("logonLimit");
		writer.String(data.logonLimit.toStdString().c_str());
		writer.String("compressTag");
		writer.String(data.compressTag.toStdString().c_str());
		writer.String("iceBzip2");
		writer.String(data.iceBzip2.toStdString().c_str());
		writer.String("messageNum");
		writer.String(data.messageNum.toStdString().c_str());
		writer.String("messageSize");
		writer.String(data.messageSize.toStdString().c_str());

		writer.String("speed");
		writer.String(data.speed.toStdString().c_str());
		writer.String("maxSpeed");
		writer.String(data.maxSpeed.toStdString().c_str());
		writer.String("mps");
		writer.String(data.mps.toStdString().c_str());
		writer.String("maxMps");
		writer.String(data.maxMps.toStdString().c_str());

		writer.String("type");
		writer.String(data.type.toStdString().c_str());
		writer.String("location");
		writer.String(data.location.toStdString().c_str());

		writer.EndObject();
		writer.EndArray();

		writer.EndObject();
	}
	catch (...) {}

	QFile file("../../binx64/release/2.json");
	file.open(QIODevice::WriteOnly);
	// 将json以文本形式写入文件并关闭文件。
	file.write(json.GetString());
	file.close();


	//把json数据转为QString
	QString s = QString(json.GetString());
	return s;
}

 

猜你喜欢

转载自blog.csdn.net/ljjjjjjjjjjj/article/details/131653715