欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ RapidJson解析

程序员文章站 2024-02-04 08:27:22
...
#include <rapidjson/rapidjson.h>
#include <rapidjson/writer.h>
#include <rapidjson/prettywriter.h>
#include <rapidjson/document.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/memorystream.h>
#include <map>
#ifdef __unix
#endif
using namespace std;
using rapidjson::Document;
using rapidjson::StringBuffer;
using rapidjson::Reader;
using rapidjson::Writer;
using namespace rapidjson;

bool parseJSON_string_double(string jsonstr, map<string, double>& ffea) {
	Document root;
	if (root.Parse(jsonstr.c_str()).HasParseError()) {  // c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同. Parse()将字符串转变为json格式
		throw string("parse error!\n");
		return false;
	}
	if (!root.IsObject()) {    // 解析的数据是一个json对象,所有内容被解析成k:v形式作为成员变量,k为成员变量名,v为值
		throw string("should be a object!\n");
		return false;
	}
	string elem, elemll;
	ffea.clear();
	for (auto iter = root.MemberBegin(); iter != root.MemberEnd(); ++iter) {  // 遍历对象中所有的成员变量k:v,放到一个map集合中
		elem = (iter->name).GetString();  // k成员变量名
		ffea[elem] = (iter->value).GetDouble();   // 成员变量值
		cout << elem << ffea[elem] << endl;
	}
	return true;
}