Skip to content

Commit 3d77d11

Browse files
committed
add traverse as pointer example
1 parent 1c2c8e0 commit 3d77d11

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

example/traverseaspointer.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include "rapidjson/document.h"
2+
#include "rapidjson/filereadstream.h"
3+
#include "rapidjson/pointer.h"
4+
#include "rapidjson/stringbuffer.h"
5+
#include <iostream>
6+
7+
using namespace rapidjson;
8+
9+
void 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+
28+
int 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+
}

0 commit comments

Comments
 (0)