c++ rapidjson读取json文件 解析
标签:etc error control using stringbu numbers name file 移动
#include
#include string>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
using namespace std;
string readfile(const char *filename){
FILE *fp = fopen(filename, "rb");
if(!fp){
printf("open failed! file: %s", filename);
return "";
}
char *buf = new char[1024*16];
int n = fread(buf, 1, 1024*16, fp);
fclose(fp);
string result;
if(n>=0){
result.append(buf, 0, n);
}
delete []buf;
return result;
}
int parseJSON(const char *jsonstr){
Document d;
if(d.Parse(jsonstr).HasParseError()){
printf("parse error!\n");
return -1;
}
if(!d.IsObject()){
printf("should be an object!\n");
return -1;
}
if(d.HasMember("errorCode")){
Value &m = d["errorCode"];
int v = m.GetInt();
printf("errorCode: %d\n", v);
}
printf("show numbers: \n");
if(d.HasMember("numbers")){
Value &m = d["numbers"];
if(m.IsArray()){
for(int i = 0; i ){
Value &e = m[i];
int n = e.GetInt();
printf("%d,", n);
}
}
}
return 0;
}
int parseJSON2(const char *jsonstr){
Document d;
if(d.Parse(jsonstr).HasParseError()){
throw string("parse error!\n");
}
if(!d.IsObject()){
throw string("should be an object!\n");
}
if(!d.HasMember("errorCode")){
throw string("‘errorCode‘ no found!");
}
Value &m = d["errorCode"];
int v = m.GetInt();
printf("errorCode: %d\n", v);
printf("show numbers:\n");
if(d.HasMember("numbers")){
Value &m = d["numbers"];
if(m.IsArray()){
for(int i = 0; i ){
Value &e = m[i];
int n = e.GetInt();
printf("%d", n);
}
}
}
return 0;
}
/*
//path="/Users/macname/Desktop/example.json"
{
"errorCode":0,
"reason":"OK",
"result":{"userId":10086,"name":"中国移动"},
"numbers":[110,120,119,911]
}
*/
int main(){
string jsonstr = readfile("/Users/macname/Desktop/example.json");
//parseJSON(jsonstr.c_str());
try{
parseJSON2(jsonstr.c_str());
}catch(string e){
printf("error: %s \n", e.c_str());
}
getchar();
return 0;
}
输出
errorCode: 0
show numbers:
110120119911
c++ rapidjson读取json文件 解析
标签:etc error control using stringbu numbers name file 移动
原文地址:https://www.cnblogs.com/sea-stream/p/11105387.html
评论