JsonCpp project page Classes Namespace JsonCpp home page

Json::StreamWriterBuilder Class Reference

Build a StreamWriter implementation. More...

#include <json/writer.h>

Inherits Json::StreamWriter::Factory.

Public Member Functions

 StreamWriterBuilder ()
 ~StreamWriterBuilder () override
StreamWriternewStreamWriter () const override
bool validate (Json::Value *invalid) const
Valueoperator[] (const String &key)
 A simple way to update a specific setting. More...
- Public Member Functions inherited from Json::StreamWriter::Factory
virtual ~Factory ()

Static Public Member Functions

static void setDefaults (Json::Value *settings)
 Called by ctor, but you can use this to reset settings_. More...

Public Attributes

Json::Value settings_
 Configuration of this builder. More...

Detailed Description

Build a StreamWriter implementation.


using namespace Json;
Value value = ...;
builder["commentStyle"] = "None";
builder["indentation"] = " "; // or whatever you like
std::unique_ptr<Json::StreamWriter> writer(
writer->write(value, &std::cout);
std::cout << std::endl; // add lf and flush
Definition: json_writer.cpp:1161
JSON (JavaScript Object Notation).
Definition: allocator.h:14

Constructor & Destructor Documentation

◆ StreamWriterBuilder()

Json::StreamWriterBuilder::StreamWriterBuilder ( )

◆ ~StreamWriterBuilder()

Json::StreamWriterBuilder::~StreamWriterBuilder ( )

Member Function Documentation

◆ newStreamWriter()

StreamWriter * Json::StreamWriterBuilder::newStreamWriter ( ) const
std::exceptionif something goes wrong (e.g. invalid settings)

Implements Json::StreamWriter::Factory.

◆ operator[]()

Value & Json::StreamWriterBuilder::operator[] ( const String key)

A simple way to update a specific setting.

◆ setDefaults()

void Json::StreamWriterBuilder::setDefaults ( Json::Value settings)

Called by ctor, but you can use this to reset settings_.

'settings' != NULL (but Json::null is fine)
(*settings)["commentStyle"] = "All";
(*settings)["indentation"] = "\t";
(*settings)["enableYAMLCompatibility"] = false;
(*settings)["dropNullPlaceholders"] = false;
(*settings)["useSpecialFloats"] = false;
(*settings)["emitUTF8"] = false;
(*settings)["precision"] = 17;
(*settings)["precisionType"] = "significant";



◆ validate()

bool Json::StreamWriterBuilder::validate ( Json::Value invalid) const
true if 'settings' are legal and consistent; otherwise, indicate bad settings via 'invalid'.

Member Data Documentation

◆ settings_

Json::Value Json::StreamWriterBuilder::settings_

Configuration of this builder.

Available settings (case-sensitive):

  • "commentStyle": "None" or "All"
  • "indentation": "<anything>".
  • Setting this to an empty string also omits newline characters.
  • "enableYAMLCompatibility": false or true
  • slightly change the whitespace around colons
  • "dropNullPlaceholders": false or true
  • Drop the "null" string from the writer's output for nullValues. Strictly speaking, this is not valid JSON. But when the output is being fed to a browser's JavaScript, it makes for smaller output and the browser can handle the output just fine.
  • "useSpecialFloats": false or true
  • If true, outputs non-finite floating point values in the following way: NaN values as "NaN", positive infinity as "Infinity", and negative infinity as "-Infinity".
  • "precision": int
  • Number of precision digits for formatting of real values.
  • "precisionType": "significant"(default) or "decimal"
  • Type of precision for formatting of real values.

You can examine 'settings_` yourself to see the defaults. You can also write and read them just like any JSON Value.

See also

The documentation for this class was generated from the following files: