add traverse as pointer example
This commit is contained in:
parent
1c2c8e085a
commit
3d77d11e28
39
example/traverseaspointer.cpp
Normal file
39
example/traverseaspointer.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
#include "rapidjson/document.h"
|
||||
#include "rapidjson/filereadstream.h"
|
||||
#include "rapidjson/pointer.h"
|
||||
#include "rapidjson/stringbuffer.h"
|
||||
#include <iostream>
|
||||
|
||||
using namespace rapidjson;
|
||||
|
||||
void traverse(const Value& v, const Pointer& p) {
|
||||
StringBuffer sb;
|
||||
p.Stringify(sb);
|
||||
std::cout << sb.GetString() << std::endl;
|
||||
|
||||
switch (v.GetType()) {
|
||||
case kArrayType:
|
||||
for (SizeType i = 0; i != v.Size(); ++i)
|
||||
traverse(v[i], p.Append(i));
|
||||
break;
|
||||
case kObjectType:
|
||||
for (Value::ConstMemberIterator m = v.MemberBegin(); m != v.MemberEnd(); ++m)
|
||||
traverse(m->value, p.Append(m->name.GetString(), m->name.GetStringLength()));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int, char*[]) {
|
||||
char readBuffer[65536];
|
||||
FileReadStream is(stdin, readBuffer, sizeof(readBuffer));
|
||||
|
||||
Document d;
|
||||
d.ParseStream(is);
|
||||
|
||||
Pointer root;
|
||||
traverse(d, root);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user