rapidjson - Serbipunk/notes GitHub Wiki

https://medium.com/codeflu/understanding-rapidjson-e7fbf62492ba

template <typename Document>
void changeDom(Document& d);
int main() {
 StringBuffer s;
 Document d;
 PrettyWriter<StringBuffer> writer(s);
 display(writer);
 cout << “Before Manupulation\n” << s.GetString() << endl ;
 d.Parse(s.GetString());
 changeDom(d);
 s.Clear(); // clear the buffer to prepare for a new json document
 writer.Reset(s); // resetting writer for a fresh json doc
 d.Accept(writer); // writing parsed document to buffer
 cout << “After Manupulation\n” << s.GetString() << endl;
}
template <typename Document>
void changeDom(Document& d){
 Value& node = d[“hello”];
 node.SetString(“c++”);
 d["f"] = true;
 d["t"].SetBool(false);
}
template <typename Writer>
void display(Writer& writer){
 writer.StartObject();
 writer.String(“hello”);
 writer.String(“world”);
 writer.String(“t”);
 writer.Bool(true);
 writer.String(“f”);
 writer.Bool(false);
 writer.String(“n”);
 writer.Null();
 writer.String(“i”);
 writer.Uint(123);
 writer.String(“pi”);
 writer.Double(3.1416);
 writer.String(“a”);
 writer.StartArray();
 for (unsigned i = 0; i < 4; i++)
 writer.Uint(i);
 writer.EndArray();
 writer.EndObject();
}