nfx-json 1.5.2
Modern C++20 JSON library with schema validation and generation
Loading...
Searching...
No Matches
nfx::json::SchemaValidator Class Referencefinal

JSON Schema validator for Document instances. More...

#include <nfx/json/SchemaValidator.h>

Classes

struct  Options
 Configuration options for validation. More...

Public Member Functions

 SchemaValidator ()
 Default constructor - creates empty validator.
 SchemaValidator (const Document &schema)
 Construct validator with schema (default options).
 SchemaValidator (const Document &schema, const Options &options)
 Construct validator with schema.
 SchemaValidator (const SchemaValidator &other)
 Copy constructor.
 SchemaValidator (SchemaValidator &&other) noexcept
 Move constructor.
 ~SchemaValidator ()
 Destructor.
SchemaValidatoroperator= (const SchemaValidator &other)
 Copy assignment operator.
SchemaValidatoroperator= (SchemaValidator &&other) noexcept
 Move assignment operator.
bool load (const Document &schema)
 Load JSON schema from Document.
bool load (std::string_view schemaJson)
 Load JSON schema from string.
bool hasSchema () const
 Check if validator has valid schema loaded.
void clear ()
 Clear loaded schema.
Document schema () const
 Get current schema as Document.
ValidationResult validate (const Document &document) const
 Validate Document against loaded schema.
ValidationResult validateAtPath (const Document &document, std::string_view documentPath="", std::string_view schemaPath="") const
 Validate Document at specific path against schema.
std::string version () const
 Get schema version/draft URI.
SchemaDraft draft () const
 Get detected JSON Schema draft version.
std::string draftString () const
 Get schema draft version as human-readable string.
std::string title () const
 Get schema title.
std::string description () const
 Get schema description.
const Optionsoptions () const noexcept
 Get validation options.

Detailed Description

JSON Schema validator for Document instances.

Provides JSON Schema Draft 2020-12 validation capabilities including type checking, constraint validation, object/array validation, and custom validation rules. Supports schema loading from Documents and detailed error reporting with path tracking.

Warning
NOT thread-safe. Do not call validate() concurrently on the same instance.

Definition at line 299 of file SchemaValidator.h.

Constructor & Destructor Documentation

◆ SchemaValidator() [1/5]

nfx::json::SchemaValidator::SchemaValidator ( )

Default constructor - creates empty validator.

Creates validator without schema. Must load schema before validation.

◆ SchemaValidator() [2/5]

nfx::json::SchemaValidator::SchemaValidator ( const Document & schema)
explicit

Construct validator with schema (default options).

Parameters
schemaJSON Schema document to use for validation

◆ SchemaValidator() [3/5]

nfx::json::SchemaValidator::SchemaValidator ( const Document & schema,
const Options & options )

Construct validator with schema.

Parameters
schemaJSON Schema document to use for validation
optionsValidation options

◆ SchemaValidator() [4/5]

nfx::json::SchemaValidator::SchemaValidator ( const SchemaValidator & other)

Copy constructor.

Parameters
otherThe validator to copy from

◆ SchemaValidator() [5/5]

nfx::json::SchemaValidator::SchemaValidator ( SchemaValidator && other)
noexcept

Move constructor.

Parameters
otherThe validator to move from

Member Function Documentation

◆ description()

std::string nfx::json::SchemaValidator::description ( ) const

Get schema description.

Returns
Schema description string, or empty if not specified

◆ draft()

SchemaDraft nfx::json::SchemaValidator::draft ( ) const

Get detected JSON Schema draft version.

Returns
SchemaDraft enumeration value indicating the draft version

◆ draftString()

std::string nfx::json::SchemaValidator::draftString ( ) const

Get schema draft version as human-readable string.

Returns
Draft version string (e.g., "2020-12", "07"), or empty if unknown

◆ hasSchema()

bool nfx::json::SchemaValidator::hasSchema ( ) const

Check if validator has valid schema loaded.

Returns
True if schema is loaded and valid, false otherwise

◆ load() [1/2]

bool nfx::json::SchemaValidator::load ( const Document & schema)

Load JSON schema from Document.

Parameters
schemaJSON Schema document
Returns
True if schema loaded successfully, false on parse error

◆ load() [2/2]

bool nfx::json::SchemaValidator::load ( std::string_view schemaJson)

Load JSON schema from string.

Parameters
schemaJsonJSON Schema as string
Returns
True if schema loaded successfully, false on parse error

◆ operator=() [1/2]

SchemaValidator & nfx::json::SchemaValidator::operator= ( const SchemaValidator & other)

Copy assignment operator.

Parameters
otherThe validator to copy from
Returns
Reference to this validator

◆ operator=() [2/2]

SchemaValidator & nfx::json::SchemaValidator::operator= ( SchemaValidator && other)
noexcept

Move assignment operator.

Parameters
otherThe validator to move from
Returns
Reference to this validator

◆ options()

const Options & nfx::json::SchemaValidator::options ( ) const
noexcept

Get validation options.

Returns
Current validation options

◆ schema()

Document nfx::json::SchemaValidator::schema ( ) const

Get current schema as Document.

Returns
Current schema Document, or empty Document if no schema loaded

◆ title()

std::string nfx::json::SchemaValidator::title ( ) const

Get schema title.

Returns
Schema title string, or empty if not specified

◆ validate()

ValidationResult nfx::json::SchemaValidator::validate ( const Document & document) const

Validate Document against loaded schema.

Parameters
documentThe JSON document to validate
Returns
ValidationResult with success status and error details
Exceptions
std::runtime_errorif no schema is loaded
Warning
NOT thread-safe (modifies internal cache)

◆ validateAtPath()

ValidationResult nfx::json::SchemaValidator::validateAtPath ( const Document & document,
std::string_view documentPath = "",
std::string_view schemaPath = "" ) const

Validate Document at specific path against schema.

Parameters
documentThe JSON document to validate
documentPathPath within document to validate (empty for root)
schemaPathPath within schema to validate against (empty for root schema)
Returns
ValidationResult with success status and error details
Warning
NOT thread-safe (modifies internal cache)

◆ version()

std::string nfx::json::SchemaValidator::version ( ) const

Get schema version/draft URI.

Returns
Schema $schema URI string, or empty if not specified

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