Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/miloyip/rapidjson.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormiloyip <miloyip@gmail.com>2021-03-24 11:51:12 +0300
committermiloyip <miloyip@gmail.com>2021-03-24 11:51:12 +0300
commit3d77d11e28aaa32bd8c8a35b2d306a586c953865 (patch)
tree5b67d850f73ae26086eb0a54c81855d673855a82 /example
parent1c2c8e085a8b2561dff17bedb689d2eb0609b689 (diff)
add traverse as pointer example
Diffstat (limited to 'example')
-rw-r--r--example/traverseaspointer.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/example/traverseaspointer.cpp b/example/traverseaspointer.cpp
new file mode 100644
index 00000000..7e0c8992
--- /dev/null
+++ b/example/traverseaspointer.cpp
@@ -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;
+}