|
1 |
| -// JSON pretty formatting example |
2 |
| -// This example can handle UTF-8/UTF-16LE/UTF-16BE/UTF-32LE/UTF-32BE. |
3 |
| -// The input firstly convert to UTF8, and then write to the original encoding with pretty formatting. |
4 |
| - |
5 |
| -#include "rapidjson/reader.h" |
6 |
| -#include "rapidjson/prettywriter.h" |
7 |
| -#include "rapidjson/filereadstream.h" |
8 |
| -#include "rapidjson/filewritestream.h" |
9 |
| -#include "rapidjson/encodedstream.h" // NEW |
10 |
| -#include "rapidjson/error/en.h" |
11 |
| -#ifdef _WIN32 |
12 |
| -#include <fcntl.h> |
13 |
| -#include <io.h> |
14 |
| -#endif |
15 |
| - |
16 |
| -using namespace rapidjson; |
17 |
| - |
18 |
| -int main(int, char*[]) { |
19 |
| -#ifdef _WIN32 |
20 |
| - // Prevent Windows converting between CR+LF and LF |
21 |
| - _setmode(_fileno(stdin), _O_BINARY); // NEW |
22 |
| - _setmode(_fileno(stdout), _O_BINARY); // NEW |
23 |
| -#endif |
24 |
| - |
25 |
| - // Prepare reader and input stream. |
26 |
| - //Reader reader; |
27 |
| - GenericReader<AutoUTF<unsigned>, UTF8<> > reader; // CHANGED |
28 |
| - char readBuffer[65536]; |
29 |
| - FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); |
30 |
| - AutoUTFInputStream<unsigned, FileReadStream> eis(is); // NEW |
31 |
| - |
32 |
| - // Prepare writer and output stream. |
33 |
| - char writeBuffer[65536]; |
34 |
| - FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); |
35 |
| - |
36 |
| -#if 1 |
37 |
| - // Use the same Encoding of the input. Also use BOM according to input. |
38 |
| - typedef AutoUTFOutputStream<unsigned, FileWriteStream> OutputStream; // NEW |
39 |
| - OutputStream eos(os, eis.GetType(), eis.HasBOM()); // NEW |
40 |
| - PrettyWriter<OutputStream, UTF8<>, AutoUTF<unsigned> > writer(eos); // CHANGED |
41 |
| -#else |
42 |
| - // You may also use static bound encoding type, such as output to UTF-16LE with BOM |
43 |
| - typedef EncodedOutputStream<UTF16LE<>,FileWriteStream> OutputStream; // NEW |
44 |
| - OutputStream eos(os, true); // NEW |
45 |
| - PrettyWriter<OutputStream, UTF8<>, UTF16LE<> > writer(eos); // CHANGED |
46 |
| -#endif |
47 |
| - |
48 |
| - // JSON reader parse from the input stream and let writer generate the output. |
49 |
| - //if (!reader.Parse<kParseValidateEncodingFlag>(is, writer)) { |
50 |
| - if (!reader.Parse<kParseValidateEncodingFlag>(eis, writer)) { // CHANGED |
51 |
| - fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); |
52 |
| - return 1; |
53 |
| - } |
54 |
| - |
55 |
| - return 0; |
56 |
| -} |
| 1 | +// JSON pretty formatting example |
| 2 | +// This example can handle UTF-8/UTF-16LE/UTF-16BE/UTF-32LE/UTF-32BE. |
| 3 | +// The input firstly convert to UTF8, and then write to the original encoding with pretty formatting. |
| 4 | + |
| 5 | +#include "rapidjson/reader.h" |
| 6 | +#include "rapidjson/prettywriter.h" |
| 7 | +#include "rapidjson/filereadstream.h" |
| 8 | +#include "rapidjson/filewritestream.h" |
| 9 | +#include "rapidjson/encodedstream.h" // NEW |
| 10 | +#include "rapidjson/error/en.h" |
| 11 | +#ifdef _WIN32 |
| 12 | +#include <fcntl.h> |
| 13 | +#include <io.h> |
| 14 | +#endif |
| 15 | + |
| 16 | +using namespace rapidjson; |
| 17 | + |
| 18 | +int main(int, char*[]) { |
| 19 | +#ifdef _WIN32 |
| 20 | + // Prevent Windows converting between CR+LF and LF |
| 21 | + _setmode(_fileno(stdin), _O_BINARY); // NEW |
| 22 | + _setmode(_fileno(stdout), _O_BINARY); // NEW |
| 23 | +#endif |
| 24 | + |
| 25 | + // Prepare reader and input stream. |
| 26 | + //Reader reader; |
| 27 | + GenericReader<AutoUTF<unsigned>, UTF8<> > reader; // CHANGED |
| 28 | + char readBuffer[65536]; |
| 29 | + FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); |
| 30 | + AutoUTFInputStream<unsigned, FileReadStream> eis(is); // NEW |
| 31 | + |
| 32 | + // Prepare writer and output stream. |
| 33 | + char writeBuffer[65536]; |
| 34 | + FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); |
| 35 | + |
| 36 | +#if 1 |
| 37 | + // Use the same Encoding of the input. Also use BOM according to input. |
| 38 | + typedef AutoUTFOutputStream<unsigned, FileWriteStream> OutputStream; // NEW |
| 39 | + OutputStream eos(os, eis.GetType(), eis.HasBOM()); // NEW |
| 40 | + PrettyWriter<OutputStream, UTF8<>, AutoUTF<unsigned> > writer(eos); // CHANGED |
| 41 | +#else |
| 42 | + // You may also use static bound encoding type, such as output to UTF-16LE with BOM |
| 43 | + typedef EncodedOutputStream<UTF16LE<>,FileWriteStream> OutputStream; // NEW |
| 44 | + OutputStream eos(os, true); // NEW |
| 45 | + PrettyWriter<OutputStream, UTF8<>, UTF16LE<> > writer(eos); // CHANGED |
| 46 | +#endif |
| 47 | + |
| 48 | + // JSON reader parse from the input stream and let writer generate the output. |
| 49 | + //if (!reader.Parse<kParseValidateEncodingFlag>(is, writer)) { |
| 50 | + if (!reader.Parse<kParseValidateEncodingFlag>(eis, writer)) { // CHANGED |
| 51 | + fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); |
| 52 | + return 1; |
| 53 | + } |
| 54 | + |
| 55 | + return 0; |
| 56 | +} |
0 commit comments