前言:
最近项目需要解析json文件,网上看到有这个库,蛮吊的样子,就来撸一发。
开始:
开始部分当然是加载json,(不加载怎么解析?)
个人看法是 Rapidjson貌似只提供了解析方式没有提供具体的加载函数!
在网上找了一下一个比较靠谱的方式。
#include <iostream> //用于把json文件加载进入内存
#include <fstream>
//库的头文件
#include "rapidjson/document.h"#include "rapidjson/filereadstream.h"#include "rapidjson/error/en.h"using namespace rapidjson;
int loadJSON(std::string filename, rapidjson::Document& json_document)
{
FILE* f = fopen(filename.c_str(), "rb");if (!f){
//由于我是在qt上玩所以这里的打印是用的其他的打印函数
qDebug("Couldn't open JSON file.\n");return 1;}
char read_buffer[4096];rapidjson::FileReadStream reader_stream(f, read_buffer, sizeof(read_buffer));json_document.ParseStream(reader_stream);
fclose(f);
if (json_document.HasParseError()){
qDebug("Error parsing JSON(offset %u): %s\n", (unsigned)json_document.GetErrorOffset(), GetParseError_En(json_document.GetParseError()));return 2;}
return 0;
}