aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilo Yip <miloyip@gmail.com>2019-02-06 19:52:54 +0800
committerGitHub <noreply@github.com>2019-02-06 19:52:54 +0800
commit1892013216a843029f3c8e39ccc9a7c8029891e8 (patch)
tree7af5bdeddb3230c3a2412c63367fa4bd4f1780fc
parent79a6dabd08fad98a94f2e25e2080eff969a64c80 (diff)
parentd0188462d909d221bcd55c2a64ca5943b931dc08 (diff)
downloadrapidjson-1892013216a843029f3c8e39ccc9a7c8029891e8.tar.gz
Merge pull request #1421 from HomeControlAS/sort_by_name_example
added example for sorting keys
-rw-r--r--example/CMakeLists.txt1
-rw-r--r--example/sortkeys/sortkeys.cpp66
2 files changed, 67 insertions, 0 deletions
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index ff54199..9f53c9a 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -21,6 +21,7 @@ set(EXAMPLES
simplereader
simplepullreader
simplewriter
+ sortkeys
tutorial)
include_directories("../include/")
diff --git a/example/sortkeys/sortkeys.cpp b/example/sortkeys/sortkeys.cpp
new file mode 100644
index 0000000..85e0807
--- /dev/null
+++ b/example/sortkeys/sortkeys.cpp
@@ -0,0 +1,66 @@
+#include "rapidjson/document.h"
+#include "rapidjson/filewritestream.h"
+#include <rapidjson/prettywriter.h>
+
+#include <algorithm>
+#include <iostream>
+
+using namespace rapidjson;
+using namespace std;
+
+void printIt(const Value &doc)
+{
+ char writeBuffer[65536];
+ FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer));
+ PrettyWriter<FileWriteStream> writer(os);
+ doc.Accept(writer);
+
+ cout << endl;
+}
+
+struct NameComparator
+{
+ bool
+ operator()(const GenericMember<UTF8<>, MemoryPoolAllocator<>> &lhs,
+ const GenericMember<UTF8<>, MemoryPoolAllocator<>> &rhs) const
+ {
+ return (strcmp(lhs.name.GetString(), rhs.name.GetString()) < 0);
+ }
+};
+
+int main()
+{
+ Document d = Document(kObjectType);
+ Document::AllocatorType &allocator = d.GetAllocator();
+
+ d.AddMember("zeta", Value().SetBool(false), allocator);
+ d.AddMember("gama", Value().SetString("test string", allocator), allocator);
+ d.AddMember("delta", Value().SetInt(123), allocator);
+
+ Value a(kArrayType);
+ d.AddMember("alpha", a, allocator);
+
+ printIt(d);
+
+ /**
+{
+ "zeta": false,
+ "gama": "test string",
+ "delta": 123,
+ "alpha": []
+}
+**/
+
+ std::sort(d.MemberBegin(), d.MemberEnd(), NameComparator());
+
+ printIt(d);
+ /**
+{
+ "alpha": [],
+ "delta": 123,
+ "gama": "test string",
+ "zeta": false
+}
+**/
+ return 0;
+}