blob: 7e0c89923e4772bd405a97556bfa6c82a6f644a8 [file] [log] [blame]
miloyip3d77d112021-03-24 16:51:12 +08001#include "rapidjson/document.h"
2#include "rapidjson/filereadstream.h"
3#include "rapidjson/pointer.h"
4#include "rapidjson/stringbuffer.h"
5#include <iostream>
6
7using namespace rapidjson;
8
9void traverse(const Value& v, const Pointer& p) {
10 StringBuffer sb;
11 p.Stringify(sb);
12 std::cout << sb.GetString() << std::endl;
13
14 switch (v.GetType()) {
15 case kArrayType:
16 for (SizeType i = 0; i != v.Size(); ++i)
17 traverse(v[i], p.Append(i));
18 break;
19 case kObjectType:
20 for (Value::ConstMemberIterator m = v.MemberBegin(); m != v.MemberEnd(); ++m)
21 traverse(m->value, p.Append(m->name.GetString(), m->name.GetStringLength()));
22 break;
23 default:
24 break;
25 }
26}
27
28int main(int, char*[]) {
29 char readBuffer[65536];
30 FileReadStream is(stdin, readBuffer, sizeof(readBuffer));
31
32 Document d;
33 d.ParseStream(is);
34
35 Pointer root;
36 traverse(d, root);
37
38 return 0;
39}