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:
authorseky <hrvoje.seketa@homecontrol.no>2018-12-05 00:40:40 +0300
committerseky <hrvoje.seketa@homecontrol.no>2018-12-05 00:40:40 +0300
commitc9060b4a5c29a0d9fc69573695e600add61b75fc (patch)
tree9611d9a4a52ef56cc5415ad0faef9fefba7996cb
parent30d92a6399b6077006d976b1dc05ee13305bf1c4 (diff)
added example for sorting keys
-rw-r--r--example/CMakeLists.txt1
-rw-r--r--example/sortkeys/sortkeys.cpp70
2 files changed, 71 insertions, 0 deletions
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index ff541993..9f53c9aa 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 00000000..fb45d4aa
--- /dev/null
+++ b/example/sortkeys/sortkeys.cpp
@@ -0,0 +1,70 @@
+#define RAPIDJSON_HAS_STDSTRING 1
+#include "rapidjson/document.h"
+#include <rapidjson/prettywriter.h>
+#include <rapidjson/stringbuffer.h>
+
+#include <algorithm>
+#include <iostream>
+
+using namespace rapidjson;
+using namespace std;
+
+void printIt(Document &doc)
+{
+ string output;
+ StringBuffer buffer;
+ PrettyWriter<StringBuffer> writer(buffer);
+ doc.Accept(writer);
+
+ output = buffer.GetString();
+ cout << output << endl;
+}
+
+struct ValueNameComparator
+{
+ bool
+ operator()(const GenericMember<UTF8<>, MemoryPoolAllocator<>> &lhs,
+ const GenericMember<UTF8<>, MemoryPoolAllocator<>> &rhs) const
+ {
+ string lhss = string(lhs.name.GetString());
+ string rhss = string(rhs.name.GetString());
+ return lhss < rhss;
+ }
+};
+
+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(), ValueNameComparator());
+
+ printIt(d);
+ /**
+{
+ "alpha": [],
+ "delta": 123,
+ "gama": "test string",
+ "zeta": false
+}
+**/
+ return 0;
+}