rapidjson 使用总结
来源:互联网 发布:matlab 随机字符串数组 编辑:程序博客网 时间:2024/06/07 17:52
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();
}
}
}
}
太晚了以后有时间接着写保存
先说解析: 从文件里读出来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();
}
}
}
}
太晚了以后有时间接着写保存
阅读全文
0 0
- rapidjson使用总结
- rapidjson 使用总结
- rapidjson使用总结
- rapidjson使用
- rapidjson 使用
- rapidjson 使用
- rapidjson读写方法总结
- rapidjson库的使用
- RapidJSON的使用
- rapidJson 的使用
- rapidjson常见使用示例
- rapidjson的使用
- rapidjson 使用例子
- rapidjson的使用例子
- rapidjson使用样例
- rapidjson的使用
- rapidjson简单使用
- rapidjson使用问题小计
- POJ_1990_MooFest_树状数组
- 关于Oracle数据库(PL/SQL)的登录问题的解决-总结
- sql语句case when使用和date_formate()的使用,DATEDIFF(字段1,字段2)获取天数,常用的MYSQL的函数
- javaweb自动登录(cookie)
- 170522 逆向-控制语句的汇编和优化
- rapidjson 使用总结
- Instant Apps是什么和实现原理
- [leetcode]: 401. Binary Watch
- Gym
- 第二行代码第三章笔记
- Redis in Python: Redis的安装
- 2017-5-21.22 C++primer笔记~
- webpack---webpack.config.js配置基本要素entry、output、loader、plugins等
- oracle linux 6.9通过UDEV创建裸设备