#include "rapidjson/document.h" #include "rapidjson/filereadstream.h" #include "rapidjson/pointer.h" #include "rapidjson/stringbuffer.h" #include 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; }