diff options
author | Milo Yip <miloyip@gmail.com> | 2019-02-06 19:52:54 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-06 19:52:54 +0800 |
commit | 1892013216a843029f3c8e39ccc9a7c8029891e8 (patch) | |
tree | 7af5bdeddb3230c3a2412c63367fa4bd4f1780fc | |
parent | 79a6dabd08fad98a94f2e25e2080eff969a64c80 (diff) | |
parent | d0188462d909d221bcd55c2a64ca5943b931dc08 (diff) | |
download | rapidjson-1892013216a843029f3c8e39ccc9a7c8029891e8.tar.gz |
Merge pull request #1421 from HomeControlAS/sort_by_name_example
added example for sorting keys
-rw-r--r-- | example/CMakeLists.txt | 1 | ||||
-rw-r--r-- | example/sortkeys/sortkeys.cpp | 66 |
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; +} |