RapidJSON: rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags > 模板类 参考

类 | Public 类型 | Public 成员函数 | 静态 Public 属性 | Protected 成员函数 | 所有成员列表
rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags > 模板类 参考

JSON writer 更多...

`#include <writer.h>`

## 类
struct | Level
| Information for each nested level 更多...

## Public 类型
typedef SourceEncoding::Ch | Ch

## Public 成员函数
| Writer (OutputStream &os, StackAllocator *stackAllocator=0, size_t levelDepth=kDefaultLevelDepth)
| Constructor 更多...
| Writer (StackAllocator *allocator=0, size_t levelDepth=kDefaultLevelDepth)
void | Reset (OutputStream &os)
| Reset the writer with a new stream. 更多...
bool | IsComplete () const
| Checks whether the output is a complete JSON. 更多...
int | GetMaxDecimalPlaces () const
void | SetMaxDecimalPlaces (int maxDecimalPlaces)
| Sets the maximum number of decimal places for double output. 更多...
Implementation of Handler
参见 Handler
bool | Null ()
bool | Bool (bool b)
bool | Int (int i)
bool | Uint (unsigned u)
bool | Int64 (int64_t i64)
bool | Uint64 (uint64_t u64)
bool | Double (double d)
| Writes the given `double` value to the stream 更多...
bool | RawNumber (const Ch *str, SizeType length, bool copy=false)
bool | String (const Ch *str, SizeType length, bool copy=false)
bool | String (const std::basic_string< Ch > &str)
bool | StartObject ()
bool | Key (const Ch *str, SizeType length, bool copy=false)
bool | Key (const std::basic_string< Ch > &str)
bool | EndObject (SizeType memberCount=0)
bool | StartArray ()
bool | EndArray (SizeType elementCount=0)

## 静态 Public 属性
static const int | kDefaultMaxDecimalPlaces = 324

## Protected 成员函数
bool | WriteInt (int i)
bool | WriteUint (unsigned u)
bool | WriteInt64 (int64_t i64)
bool | WriteUint64 (uint64_t u)
bool | WriteDouble (double d)

## Convenience extensions
static const size_t | kDefaultLevelDepth = 32
OutputStream * | os_
internal::Stack< StackAllocator > | level_stack_
int | maxDecimalPlaces_
bool | hasRoot_
bool | String (const Ch *const &str)
| Simpler but slower overload.
bool | Key (const Ch *const &str)
bool | RawValue (const Ch *json, size_t length, Type type)
| Write a raw JSON value. 更多...
void | Flush ()
| Flush the output stream. 更多...
bool | WriteNull ()
bool | WriteBool (bool b)
bool | WriteInt (int i)
bool | WriteUint (unsigned u)
bool | WriteInt64 (int64_t i64)
bool | WriteUint64 (uint64_t u64)
bool | WriteDouble (double d)
bool | WriteString (const Ch *str, SizeType length)
bool | ScanWriteUnescapedString (GenericStringStream< SourceEncoding > &is, size_t length)
bool | WriteStartObject ()
bool | WriteEndObject ()
bool | WriteStartArray ()
bool | WriteEndArray ()
bool | WriteRawValue (const Ch *json, size_t length)
void | Prefix (Type type)
bool | EndValue (bool ret)

## 详细描述

### template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
class rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >

JSON writer

Writer implements the concept Handler. It generates JSON text by events to an output os.

User may programmatically calls the functions of a writer to generate JSON text.

On the other side, a writer can also be passed to objects that generates events,

for example Reader::Parse() and Document::Accept().

模板参数

  OutputStream | Type of output stream.
  SourceEncoding | Encoding of source string.
  TargetEncoding | Encoding of output stream.
  StackAllocator | Type of allocator for allocating memory of stack.

注解
  implements Handler concept

## 构造及析构函数说明

## ◆ Writer()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::Writer | ( | OutputStream & | os,
|  | StackAllocator * | stackAllocator = `0`,
|  | size_t | levelDepth = `kDefaultLevelDepth`
| ) |  |
| inlineexplicit

Constructor

参数

  os | Output stream.
  stackAllocator | User supplied allocator. If it is null, it will create a private one.
  levelDepth | Initial capacity of stack.

## 成员函数说明

## ◆ Double()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::Double | ( | double | d | ) |
| inline

Writes the given `double` value to the stream

参数

  d | The value to be written.

返回
  Whether it is succeed.

## ◆ Flush()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

void rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::Flush | ( |  | ) |
| inline

Flush the output stream.

Allows the user to flush the output stream immediately.

## ◆ IsComplete()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::IsComplete | ( |  | ) | const
| inline

Checks whether the output is a complete JSON.

A complete JSON has a complete root object or array.

## ◆ RawValue()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

bool rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::RawValue | ( | const Ch * | json,
|  | size_t | length,
|  | Type | type
| ) |  |
| inline

Write a raw JSON value.

For user to write a stringified JSON as a value.

参数

  json | A well-formed JSON value. It should not contain null character within [0, length - 1] range.
  length | Length of the json.
  type | Type of the root of json.

## ◆ Reset()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

void rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::Reset | ( | OutputStream & | os | ) |
| inline

Reset the writer with a new stream.

This function reset the writer with a new stream and default settings, in order to make a Writer object reusable for output multiple JSONs.

参数

  os | New output stream. Writer<OutputStream> writer(os1); writer.StartObject(); // ... writer.EndObject(); writer.Reset(os2); writer.StartObject(); // ... writer.EndObject();

## ◆ SetMaxDecimalPlaces()

template<typename OutputStream , typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>

void rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::SetMaxDecimalPlaces | ( | int | maxDecimalPlaces | ) |
| inline

Sets the maximum number of decimal places for double output.

This setting truncates the output with specified number of decimal places.

For example,

writer.SetMaxDecimalPlaces(3);
writer.StartArray();
writer.Double(0.12345); // "0.123"
writer.Double(0.0001); // "0.0"
writer.Double(1.234567890123456e30); // "1.234567890123456e30" (do not truncate significand for positive exponent)
writer.Double(1.23e-4); // "0.0" (do truncate significand for negative exponent)
writer.EndArray();

The default setting does not truncate any decimal places. You can restore to this setting by calling

writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);

该类的文档由以下文件生成:

- include/rapidjson/fwd.h
- include/rapidjson/writer.h