1e462795ff5d4c7359f9e8637c10544bb2de70107tturney// JSON condenser example
2e462795ff5d4c7359f9e8637c10544bb2de70107tturney
3e462795ff5d4c7359f9e8637c10544bb2de70107tturney// This example parses JSON text from stdin with validation,
4e462795ff5d4c7359f9e8637c10544bb2de70107tturney// and re-output the JSON content to stdout without whitespace.
5e462795ff5d4c7359f9e8637c10544bb2de70107tturney
6e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include "rapidjson/reader.h"
7e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include "rapidjson/writer.h"
8e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include "rapidjson/filereadstream.h"
9e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include "rapidjson/filewritestream.h"
10e462795ff5d4c7359f9e8637c10544bb2de70107tturney#include "rapidjson/error/en.h"
11e462795ff5d4c7359f9e8637c10544bb2de70107tturney
12e462795ff5d4c7359f9e8637c10544bb2de70107tturneyusing namespace rapidjson;
13e462795ff5d4c7359f9e8637c10544bb2de70107tturney
14e462795ff5d4c7359f9e8637c10544bb2de70107tturneyint main(int, char*[]) {
15e462795ff5d4c7359f9e8637c10544bb2de70107tturney    // Prepare JSON reader and input stream.
16e462795ff5d4c7359f9e8637c10544bb2de70107tturney    Reader reader;
17e462795ff5d4c7359f9e8637c10544bb2de70107tturney    char readBuffer[65536];
18e462795ff5d4c7359f9e8637c10544bb2de70107tturney    FileReadStream is(stdin, readBuffer, sizeof(readBuffer));
19e462795ff5d4c7359f9e8637c10544bb2de70107tturney
20e462795ff5d4c7359f9e8637c10544bb2de70107tturney    // Prepare JSON writer and output stream.
21e462795ff5d4c7359f9e8637c10544bb2de70107tturney    char writeBuffer[65536];
22e462795ff5d4c7359f9e8637c10544bb2de70107tturney    FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer));
23e462795ff5d4c7359f9e8637c10544bb2de70107tturney    Writer<FileWriteStream> writer(os);
24e462795ff5d4c7359f9e8637c10544bb2de70107tturney
25e462795ff5d4c7359f9e8637c10544bb2de70107tturney    // JSON reader parse from the input stream and let writer generate the output.
26e462795ff5d4c7359f9e8637c10544bb2de70107tturney    if (!reader.Parse(is, writer)) {
27e462795ff5d4c7359f9e8637c10544bb2de70107tturney        fprintf(stderr, "\nError(%u): %s\n", (unsigned)reader.GetErrorOffset(), GetParseError_En(reader.GetParseErrorCode()));
28e462795ff5d4c7359f9e8637c10544bb2de70107tturney        return 1;
29e462795ff5d4c7359f9e8637c10544bb2de70107tturney    }
30e462795ff5d4c7359f9e8637c10544bb2de70107tturney
31e462795ff5d4c7359f9e8637c10544bb2de70107tturney    return 0;
32e462795ff5d4c7359f9e8637c10544bb2de70107tturney}
33