rapidjson使用

官方文档:http://rapidjson.org/zh-cn/index.html

纯头文件,不需要安装,拷贝rapidjson到项目,然后include它

读取

include

1
2
3
4
#include "lib/rapidjson/document.h"
#include "lib/rapidjson/writer.h"
#include "lib/rapidjson/stringbuffer.h"
#include "lib/rapidjson/filereadstream.h"

读取文件并解析

1
2
3
4
5
6
7
8
9
10
11
FILE* fp = fopen(config_file.c_str(), "r");
char readBuffer[65536];
rapidjson::FileReadStream is(fp, readBuffer, sizeof(readBuffer));
rapidjson::Document d;
d.ParseStream(is);
rapidjson::Value& s = d[cameraID.c_str()];
list<std::array<int, 4>> boxesList;
for (auto& v : s.GetArray()) {
std::array<int, 4> boxArray;
string box = v.GetString();
}

写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rapidjson::StringBuffer s;
rapidjson::Writer<rapidjson::StringBuffer> writer(s);
writer.StartObject();
writer.Key("detID");
writer.String(m_videoInfo.stream_id.c_str());
writer.Key("vehicleInfor");
writer.StartArray();
for (auto box:boxes){
writer.StartObject();
writer.Key("x1");
writer.Double(box.x);
writer.Key("y1");
writer.Double(box.y);
writer.Key("x2");
writer.Double(box.x + box.w);
writer.Key("y2");
writer.Double(box.y + box.h);
writer.EndObject();
}
writer.EndArray();
writer.EndObject();