c++ rapidjson读取json文件 解析
Posted sea-stream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ rapidjson读取json文件 解析相关的知识,希望对你有一定的参考价值。
#include <iostream> #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 < m.Size(); 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 < m.Size(); 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文件 解析的主要内容,如果未能解决你的问题,请参考以下文章
C++ 基于rapidjson对json字符串的进行序列化与反序列化