全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags > 模板类 参考

JSON writer. 更多...

#include <writer.h>

类 rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags > 继承关系图:
rapidjson::PrettyWriter< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >

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. 更多...
 
bool RawValue (const Ch *json, size_t length, Type type)
 Write a raw JSON value. 更多...
 
void Flush ()
 Flush the output stream. 更多...
 
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 EndObject (SizeType memberCount=0)
 
bool StartArray ()
 
bool EndArray (SizeType elementCount=0)
 
Convenience extensions
bool String (const Ch *const &str)
 Simpler but slower overload.
 
bool Key (const Ch *const &str)
 

静态 Public 属性

static const int kDefaultMaxDecimalPlaces = 324
 

Protected 成员函数

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<>
bool WriteInt (int i)
 
template<>
bool WriteUint (unsigned u)
 
template<>
bool WriteInt64 (int64_t i64)
 
template<>
bool WriteUint64 (uint64_t u)
 
template<>
bool WriteDouble (double d)
 

Protected 属性

OutputStream * os_
 
internal::Stack< StackAllocator > level_stack_
 
int maxDecimalPlaces_
 
bool hasRoot_
 

静态 Protected 属性

static const size_t kDefaultLevelDepth = 32
 

详细描述

template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags>
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().

模板参数
OutputStreamType of output stream.
SourceEncodingEncoding of source string.
TargetEncodingEncoding of output stream.
StackAllocatorType of allocator for allocating memory of stack.
注解
implements Handler concept

构造及析构函数说明

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

Constructor.

参数
osOutput stream.
stackAllocatorUser supplied allocator. If it is null, it will create a private one.
levelDepthInitial capacity of stack.

成员函数说明

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

Writes the given double value to the stream.

参数
dThe value to be written.
返回
Whether it is succeed.
template<typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags>
void rapidjson::Writer< OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags >::Flush ( )
inline

Flush the output stream.

Allows the user to flush the output stream immediately.

template<typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags>
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.

template<typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags>
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.

参数
jsonA well-formed JSON value. It should not contain null character within [0, length - 1] range.
lengthLength of the json.
typeType of the root of json.
template<typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags>
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.

参数
osNew output stream.
Writer<OutputStream> writer(os1);
writer.StartObject();
// ...
writer.EndObject();
writer.Reset(os2);
writer.StartObject();
// ...
writer.EndObject();
template<typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags>
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);

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