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 
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));
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 }
ParseResult Parse(InputStream &is, Handler &handler)
Parse JSON text.
Definition: reader.h:558
bool HasBOM() const
Output byte stream wrapper with statically bound encoding.
ParseErrorCode GetParseErrorCode() const
Get the ParseErrorCode of last parsing.
Definition: reader.h:684
int main(int, char *[])
Definition: prettyauto.cpp:18
Wrapper of C file stream for input using fread().
Output stream wrapper with dynamically bound encoding and automatic encoding detection.
UTF-8 encoding.
Definition: encodings.h:96
SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator.
Definition: fwd.h:88
main RapidJSON namespace
Input stream wrapper with dynamically bound encoding and automatic encoding detection.
File byte stream for input using fread().
Validate encoding of JSON strings.
Definition: reader.h:150
size_t GetErrorOffset() const
Get the position of last parsing error in input, 0 otherwise.
Definition: reader.h:687
UTFType GetType() const
UTF-16 little endian encoding.
Definition: encodings.h:342
RAPIDJSON_NAMESPACE_BEGIN const RAPIDJSON_ERROR_CHARTYPE * GetParseError_En(ParseErrorCode parseErrorCode)
Maps error code of parsing into error message.
Definition: en.h:36
Writer with indentation and spacing.
Definition: fwd.h:100


choreo_rapidjson
Author(s):
autogenerated on Thu Jul 18 2019 03:59:09