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;
}
上一篇: C++ rapidjson使用
下一篇: C++之RapidJson