JsonCpp project page Classes Namespace JsonCpp home page

Json::CharReaderBuilder Class Reference

Build a CharReader implementation. More...

#include <json/reader.h>

Inherits Json::CharReader::Factory.

Public Member Functions

bool validate (Json::Value *invalid) const
 Configuration of this builder.
Valueoperator[] (const String &key)
 A simple way to update a specific setting.
Public Member Functions inherited from Json::CharReader::Factory
virtual ~Factory ()=default
virtual CharReadernewCharReader () const =0
 Allocate a CharReader via operator new().

Static Public Member Functions

static void setDefaults (Json::Value *settings)
 Called by ctor, but you can use this to reset settings_.
static void strictMode (Json::Value *settings)
 Same as old Features::strictMode().
static void ecma404Mode (Json::Value *settings)
 ECMA-404 mode.

Detailed Description

Build a CharReader implementation.

Usage:

using namespace Json;
builder["collectComments"] = false;
Value value;
String errs;
bool ok = parseFromStream(builder, std::cin, &value, &errs);
Build a CharReader implementation.
Definition reader.h:317
Represents a JSON value.
Definition value.h:207
JSON (JavaScript Object Notation).
Definition allocator.h:16
std::basic_string< char, std::char_traits< char >, Allocator< char > > String
Definition config.h:132
bool parseFromStream(CharReader::Factory const &, IStream &, Value *root, String *errs)
Consume entire stream and use its begin/end.

Definition at line 317 of file reader.h.

Member Function Documentation

◆ ecma404Mode()

void Json::CharReaderBuilder::ecma404Mode ( Json::Value * settings)
static

ECMA-404 mode.

Precondition
'settings' != NULL (but Json::null is fine)
Remarks
Defaults:
(*settings)["allowComments"] = false;
(*settings)["allowTrailingCommas"] = false;
(*settings)["strictRoot"] = false;
(*settings)["allowDroppedNullPlaceholders"] = false;
(*settings)["allowNumericKeys"] = false;
(*settings)["allowSingleQuotes"] = false;
(*settings)["stackLimit"] = 256;
(*settings)["failIfExtra"] = true;
(*settings)["rejectDupKeys"] = false;
(*settings)["allowSpecialFloats"] = false;
(*settings)["skipBom"] = false;

[CharReaderBuilderECMA404Mode]

[CharReaderBuilderECMA404Mode]

Definition at line 1961 of file json_reader.cpp.

◆ operator[]()

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

A simple way to update a specific setting.

Definition at line 1924 of file json_reader.cpp.

◆ setDefaults()

void Json::CharReaderBuilder::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)["collectComments"] = true;
(*settings)["allowComments"] = true;
(*settings)["allowTrailingCommas"] = true;
(*settings)["strictRoot"] = false;
(*settings)["allowDroppedNullPlaceholders"] = false;
(*settings)["allowNumericKeys"] = false;
(*settings)["allowSingleQuotes"] = false;
(*settings)["stackLimit"] = 256;
(*settings)["failIfExtra"] = false;
(*settings)["rejectDupKeys"] = false;
(*settings)["allowSpecialFloats"] = false;
(*settings)["skipBom"] = true;

[CharReaderBuilderDefaults]

[CharReaderBuilderDefaults]

Definition at line 1944 of file json_reader.cpp.

◆ strictMode()

void Json::CharReaderBuilder::strictMode ( Json::Value * settings)
static

Same as old Features::strictMode().

Precondition
'settings' != NULL (but Json::null is fine)
Remarks
Defaults:
(*settings)["allowComments"] = false;
(*settings)["allowTrailingCommas"] = false;
(*settings)["strictRoot"] = true;
(*settings)["allowDroppedNullPlaceholders"] = false;
(*settings)["allowNumericKeys"] = false;
(*settings)["allowSingleQuotes"] = false;
(*settings)["stackLimit"] = 256;
(*settings)["failIfExtra"] = true;
(*settings)["rejectDupKeys"] = true;
(*settings)["allowSpecialFloats"] = false;
(*settings)["skipBom"] = true;

[CharReaderBuilderStrictMode]

[CharReaderBuilderStrictMode]

Definition at line 1928 of file json_reader.cpp.

◆ validate()

bool Json::CharReaderBuilder::validate ( Json::Value * invalid) const

Configuration of this builder.

These are case-sensitive. Available settings (case-sensitive):

  • "collectComments": false or true
    • true to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if allowComments is false.
  • "allowComments": false or true
    • true if comments are allowed.
  • "allowTrailingCommas": false or true
    • true if trailing commas in objects and arrays are allowed.
  • "strictRoot": false or true
    • true if root must be either an array or an object value
  • "allowDroppedNullPlaceholders": false or true
  • "allowNumericKeys": false or true
    • true if numeric object keys are allowed.
  • "allowSingleQuotes": false or true
    • true if '' are allowed for strings (both keys and values)
  • "stackLimit": integer
    • Exceeding stackLimit (recursive depth of readValue()) will cause an exception.
    • This is a security issue (seg-faults caused by deeply nested JSON), so the default is low.
  • "failIfExtra": false or true
    • If true, parse() returns false when extra non-whitespace trails the JSON value in the input string.
  • "rejectDupKeys": false or true
    • If true, parse() returns false when a key is duplicated within an object.
  • "allowSpecialFloats": false or true
    • If true, special float values (NaNs and infinities) are allowed and their values are lossfree restorable.
  • "skipBom": false or true
    • If true, if the input starts with the Unicode byte order mark (BOM), it is skipped.

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_;

CharReaderBuilder(); ~CharReaderBuilder() override;

CharReader* newCharReader() const override;

/**

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

Definition at line 1897 of file json_reader.cpp.

References Json::Value::empty().


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