diff options
author | seky <hrvoje.seketa@homecontrol.no> | 2018-12-05 00:40:40 +0300 |
---|---|---|
committer | seky <hrvoje.seketa@homecontrol.no> | 2018-12-05 00:40:40 +0300 |
commit | c9060b4a5c29a0d9fc69573695e600add61b75fc (patch) | |
tree | 9611d9a4a52ef56cc5415ad0faef9fefba7996cb | |
parent | 30d92a6399b6077006d976b1dc05ee13305bf1c4 (diff) |
added example for sorting keys
-rw-r--r-- | example/CMakeLists.txt | 1 | ||||
-rw-r--r-- | example/sortkeys/sortkeys.cpp | 70 |
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; +} |