加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

rapidjson 使用总结

发布时间:2020-12-16 18:47:21 所属栏目:百科 来源:网络整理
导读:rapidjson只有hpp文件,包含了hpp文件不需要编译成库就可以使用 先说解析: 从文件里读出来json字符串,假设文件里的json字符串是: { "第一": "1","第二": "2","第三": 3,"第四": null",第五": 4.0,"第六": true", "第七": [ { "第一项": 1, "第二项": 2,
rapidjson只有hpp文件,包含了hpp文件不需要编译成库就可以使用 先说解析: 从文件里读出来json字符串,假设文件里的json字符串是: { "第一": "1","第二": "2","第三": 3,"第四": null",第五": 4.0,"第六": true", "第七": [ { "第一项": 1, "第二项": 2, "第三项": 3 } ],"第八": [ "第一项", "第二项", "第三项" ],"第九": { 1, 2, 3 } } 然后通过document解析,代码如下: string sDocuPath; //假设已经给他路径字符串 string str; std::ifstream inf; ostringstream oss; inf.open(sDocuPath.c_str()); oss.str(""); oss << inf.rdbuf(); inf.close(); //strText就是文件里的内容 string strText = oss.str(); //开始解析strText rapidjson::Document doc; doc.Parse(strText.c_str()); rapidjson::ParseErrorCode error(rapidjson::kParseErrorNone); error = doc.GetParseError(); if (error != rapidjson::kParseErrorNone) { LOGE << "Json Map 解析失败..." << endl; return; } if (doc.HasMember("第一")) { rapidjson::Value& firstV = doc["第一"]; if (firstV.IsString()) { str = firstV.GetString(); //str是"1" } } if (doc.HasMember("第二") && doc["第二"].IsObject()) { rapidjson::Value& secondV = doc["第二"]; if (secondV.IsString()) { str = secondV.GetString(); //str是"2" } } if (doc.HasMember("第三") ) { rapidjson::Value& thirdV = doc["第三"]; if (thirdV.IsNumber()) { str = thirdV.GetNumber(); //str是"3" } } if (doc.HasMember("第四") ) { rapidjson::Value& childV = doc["第四"]; if (childV.IsNull()) { str ; //str是null } } if (doc.HasMember("第五") ) { rapidjson::Value& childV = doc["第五"]; if (childV.IsDouble()) { double a = thirdV.GetDouble(); } } if (doc.HasMember("第六") ) { rapidjson::Value& childV = doc["第六"]; if (childV.IsBoolean()) { str = thirdV.GetBoolean(); } } if (doc.HasMember("第七") ) { rapidjson::Value& childV = doc["第七"]; if (childV.IsArray()) { for(int i=0; i<childV.size(); ++i){ Value& objectV = childV[i]; if(objectV.IsObject()){ if(objectV.hasMember("第一项")) if(objectV["第一项"].IsString()) str = objectV["第一项"].GetString(); if(objectV.hasMember("第二项")) if(objectV["第二项"].IsString()) str = objectV["第二项"].GetString(); if(objectV.hasMember("第三项")) if(objectV["第三项"].IsString()) str = objectV["第三项"].GetString(); } } } } if (doc.HasMember("第八") ) { rapidjson::Value& childV = doc["第八"]; if (childV.IsArray()) { for(int i=0; i<childV.size(); ++i){ //解析第8 if(childV[i].isString()) str = childV[i].GetString(); } } if (doc.HasMember("第九") ) { rapidjson::Value& childV = doc["第九"]; if (childV.IsArray()) { for(int i=0; i<childV.size(); ++i){ //解析第8 if(childV[i].isNumber()) str = childV[i].GetNumber(); } } } } 太晚了以后有时间接着写保存

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读