前言:
最近项目需要解析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;
}