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

StreamWriter * | newStreamWriter () const override
| Configuration of this builder.
bool | validate (Json::Value *invalid) const
Value & | operator[] (const String &key)
| A simple way to update a specific setting.
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_.

## Detailed Description

Build a StreamWriter implementation.

Usage:

using namespace Json;
Value value = ...;
StreamWriterBuilder builder;
builder["commentStyle"] = "None";
builder["indentation"] = " "; // or whatever you like
std::unique_ptr<Json::StreamWriter> writer(
builder.newStreamWriter());
writer->write(value, &std::cout);
std::cout << std::endl; // add lf and flush
Json::StreamWriterBuilder
Build a StreamWriter implementation.
Definition writer.h:90
Json::StreamWriterBuilder::newStreamWriter
StreamWriter * newStreamWriter() const override
Configuration of this builder.
Definition json_writer.cpp:1104
Json::Value
Represents a JSON value.
Definition value.h:207
Json
JSON (JavaScript Object Notation).
Definition allocator.h:16

Definition at line 90 of file writer.h.

## Member Function Documentation

## newStreamWriter()

StreamWriter * Json::StreamWriterBuilder::newStreamWriter | ( |  | ) | const

override virtual

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.
- "emitUTF8": false or true
- If true, outputs raw UTF8 strings instead of escaping them.

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

See also
  setDefaults() */ Json::Value settings_;

StreamWriterBuilder(); ~StreamWriterBuilder() override;

/**

Exceptions

  std::exception | if something goes wrong (e.g. invalid settings)

Implements Json::StreamWriter::Factory.

Definition at line 1104 of file json_writer.cpp.

References Json::decimalPlaces, and Json::significantDigits.

Referenced by Json::operator<<().

## operator[]()

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

A simple way to update a specific setting.

Definition at line 1170 of file json_writer.cpp.

## setDefaults()

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

static

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

Precondition
  'settings' != NULL (but Json::null is fine)

Remarks
  Defaults:
  (*settings)["commentStyle"] = "All";
  (*settings)["indentation"] = "\t";
  (*settings)["enableYAMLCompatibility"] = false;
  (*settings)["dropNullPlaceholders"] = false;
  (*settings)["useSpecialFloats"] = false;
  (*settings)["emitUTF8"] = false;
  (*settings)["precision"] = 17;
  (*settings)["precisionType"] = "significant";

[StreamWriterBuilderDefaults]

[StreamWriterBuilderDefaults]

Definition at line 1174 of file json_writer.cpp.

## validate()

bool Json::StreamWriterBuilder::validate | ( | Json::Value * | invalid | ) | const

Returns
  true if 'settings' are legal and consistent; otherwise, indicate bad settings via 'invalid'.

Definition at line 1147 of file json_writer.cpp.

References Json::Value::empty().

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

- include/json/writer.h
- src/lib_json/json_writer.cpp