Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
prettyauto.cpp
Go to the documentation of this file.
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"
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
16using namespace rapidjson;
17
18int 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));
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
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}
Input stream wrapper with dynamically bound encoding and automatic encoding detection.
bool HasBOM() const
UTFType GetType() const
Output stream wrapper with dynamically bound encoding and automatic encoding detection.
Output byte stream wrapper with statically bound encoding.
File byte stream for input using fread().
Wrapper of C file stream for output using fwrite().
SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator.
Definition reader.h:537
ParseResult Parse(InputStream &is, Handler &handler)
Parse JSON text.
Definition reader.h:557
ParseErrorCode GetParseErrorCode() const
Get the ParseErrorCode of last parsing.
Definition reader.h:683
size_t GetErrorOffset() const
Get the position of last parsing error in input, 0 otherwise.
Definition reader.h:686
Writer with indentation and spacing.
os_t os
RAPIDJSON_NAMESPACE_BEGIN const RAPIDJSON_ERROR_CHARTYPE * GetParseError_En(ParseErrorCode parseErrorCode)
Maps error code of parsing into error message.
Definition en.h:36
main RapidJSON namespace
@ kParseValidateEncodingFlag
Validate encoding of JSON strings.
Definition reader.h:148
Dynamically select encoding according to stream's runtime-specified UTF encoding type.
Definition encodings.h:615
UTF-16 little endian encoding.
Definition encodings.h:342
UTF-8 encoding.
Definition encodings.h:96