From cd144c3cfdc568278700484a4083a7b084d47dee Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Sat, 28 Jun 2014 19:44:11 +0800 Subject: [PATCH] Added a simple example and a diagram showing the process. --- build/premake4.lua | 5 +++ doc/diagram/makefile | 8 +++++ doc/diagram/simpledom.dot | 54 ++++++++++++++++++++++++++++++++ doc/diagram/simpledom.png | Bin 0 -> 23116 bytes example/simpledom/simpledom.cpp | 28 +++++++++++++++++ readme.md | 43 ++++++++++++++++++++++++- 6 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 doc/diagram/makefile create mode 100644 doc/diagram/simpledom.dot create mode 100644 doc/diagram/simpledom.png create mode 100644 example/simpledom/simpledom.cpp diff --git a/build/premake4.lua b/build/premake4.lua index b4fdf8d..28a7138 100644 --- a/build/premake4.lua +++ b/build/premake4.lua @@ -176,3 +176,8 @@ solution "example" kind "ConsoleApp" files "../example/serialize/*" setTargetObjDir("../bin") + + project "simpledom" + kind "ConsoleApp" + files "../example/simpledom/*" + setTargetObjDir("../bin") diff --git a/doc/diagram/makefile b/doc/diagram/makefile new file mode 100644 index 0000000..4699438 --- /dev/null +++ b/doc/diagram/makefile @@ -0,0 +1,8 @@ +%.pdf: %.dot + dot $< -Tpdf -o $@ + +%.png: %.dot + dot $< -Tpng -o $@ + +DOTFILES = $(basename $(wildcard *.dot)) +all: $(addsuffix .png, $(DOTFILES)) #$(addsuffix .pdf, $(DOTFILES)) diff --git a/doc/diagram/simpledom.dot b/doc/diagram/simpledom.dot new file mode 100644 index 0000000..1e9edb5 --- /dev/null +++ b/doc/diagram/simpledom.dot @@ -0,0 +1,54 @@ +digraph { + compound=true + fontname="Inconsolata, Consolas" + fontsize=10 + margin="0,0" + ranksep=0.2 + penwidth=0.5 + + node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] + edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] + + { + node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray] + srcjson [label="\{|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|0|\}"] + dstjson [label="\{|p|r|o|j|e|c|t|\"|:|\"|r|a|p|i|d|j|s|o|n|\"|,|\"|s|t|a|r|s|\"|:|1|1|\}"] + } + + { + node [shape="box", style="filled", fillcolor="gray95"] + Document2 [label="(Modified) Document"] + Writer + } + + subgraph cluster1 { + margin="10,10" + labeljust="left" + label = "Document" + style=filled + fillcolor=gray95 + node [shape=Mrecord, style=filled, colorscheme=spectral7] + + root [label="{object|}", fillcolor=3] + + { + project [label="{string|\"project\"}", fillcolor=5] + rapidjson [label="{string|\"rapidjson\"}", fillcolor=5] + stars [label="{string|\"stars\"}", fillcolor=5] + ten [label="{number|10}", fillcolor=6] + } + + edge [arrowhead=vee] + root -> { project, stars } + + edge [arrowhead="none"] + project -> rapidjson + stars -> ten + } + + srcjson -> root [label=" Parse()", lhead="cluster1"] + + ten -> Document2 [label=" Increase \"stars\"", ltail="cluster1" ] + Document2 -> Writer [label=" Traverse DOM by Accept()"] + Writer -> dstjson [label=" Output to StringBuffer"] +} \ No newline at end of file diff --git a/doc/diagram/simpledom.png b/doc/diagram/simpledom.png new file mode 100644 index 0000000000000000000000000000000000000000..dd9e9aef916abd5d580795a5df9fdd83a65d2181 GIT binary patch literal 23116 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 aHdIAOUahMiQGuuoVfM4NNzt)$zy1q&&@7n% literal 0 HcmV?d00001 diff --git a/example/simpledom/simpledom.cpp b/example/simpledom/simpledom.cpp new file mode 100644 index 0000000..bdcf6c8 --- /dev/null +++ b/example/simpledom/simpledom.cpp @@ -0,0 +1,28 @@ +// JSON simple example +// This example does not handle errors. + +#include "rapidjson/document.h" +#include "rapidjson/writer.h" +#include "rapidjson/stringbuffer.h" +#include + +using namespace rapidjson; + +int main() { + // 1. Parse a JSON string into DOM. + const char* json = "{\"project\":\"rapidjson\",\"stars\":10}"; + Document d; + d.Parse<0>(json); + + // 2. Modify it by DOM. + d["stars"].SetInt(d["stars"].GetInt() + 1); + + // 3. Stringify the DOM + StringBuffer buffer; + Writer writer(buffer); + d.Accept(writer); + + // Output {"project":"rapidjson","stars":10} + std::cout << buffer.GetString() << std::endl; + return 0; +} diff --git a/readme.md b/readme.md index 894fb44..18d8b95 100644 --- a/readme.md +++ b/readme.md @@ -41,9 +41,50 @@ Rapidjson is a header-only C++ library. Just copy the `rapidjson/include/rapidjs To build the tests and examples: -1. Obtain [premake4] (http://industriousone.com/premake/download). +1. Obtain [premake4](http://industriousone.com/premake/download). 2. Copy premake4 executable to rapidjson/build (or system path) 3. Run `rapidjson/build/premake.bat` on Windows, `rapidjson/build/premake.sh` on Linux or other platforms 4. On Windows, build the solution at `rapidjson/build/vs2008/` or `/vs2010/` 5. On other platforms, run GNU make at `rapidjson/build/gmake/` (e.g., `make -f test.make config=release32`, `make -f example.make config=debug32`) 6. On success, the executable are generated at `rapidjson/bin` + +## Usage at a glance + +This simple example parses a JSON string into a document (DOM), make a simple modification of the DOM, and finally stringify the DOM to a JSON string. + +```cpp +// example/simpledom/simpledom.cpp +#include "rapidjson/document.h" +#include "rapidjson/writer.h" +#include "rapidjson/stringbuffer.h" +#include + +using namespace rapidjson; + +int main() { + // 1. Parse a JSON string into DOM. + const char* json = "{\"project\":\"rapidjson\",\"stars\":10}"; + Document d; + d.Parse<0>(json); + + // 2. Modify it by DOM. + d["stars"].SetInt(d["stars"].GetInt() + 1); + + // 3. Stringify the DOM + StringBuffer buffer; + Writer writer(buffer); + d.Accept(writer); + + // Output {"project":"rapidjson","stars":10} + std::cout << buffer.GetString() << std::endl; + return 0; +} +``` + +Note that this exmample did not handle potential errors. + +The following diagram shows the process. + +[simpledom](doc/diagram/simpledom.png) + +More [examples](example/) are avaliable.