TSDuck v3.46-4930
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::json::String Class Reference

#include <tsjsonString.h>

Inheritance diagram for ts::json::String:
Collaboration diagram for ts::json::String:

Public Member Functions

 String (const UString &value=UString())
void add (const UString &name, const UString &value)
void add (const UString &name, const ValuePtr &value)
template<typename T>
requires std::floating_point<T>
void add (const UString &name, T value)
template<typename T>
requires std::integral<T>
void add (const UString &name, T value)
virtual Value & at (size_t index)
virtual const Value & at (size_t index) const
virtual void clear () override
virtual void erase (size_t index, size_t count=1)
virtual ValuePtr extract (const UString &name)
virtual ValuePtr extractAt (size_t index)
virtual void getNames (UStringList &names) const
virtual bool isArray () const
virtual bool isFalse () const
virtual bool isInteger () const
virtual bool isNull () const
virtual bool isNumber () const
virtual bool isObject () const
virtual bool isString () const override
virtual bool isTrue () const
virtual UString oneLiner (Report &report=(ts::NullReport::Instance())) const
virtual void print (TextFormatter &output) const override
virtual UString printed (size_t indent=2, Report &report=(ts::NullReport::Instance())) const
virtual const Value & query (const UString &path) const
virtual Value & query (const UString &path, bool create=false, Type type=Type::Object)
virtual void remove (const UString &name)
virtual bool save (const fs::path &fileName, size_t indent=2, bool stdOutputIfEmpty=false, Report &report=(ts::NullReport::Instance()))
size_t set (const UString &value, size_t index=std::numeric_limits< size_t >::max())
size_t set (const ValuePtr &value, size_t index=std::numeric_limits< size_t >::max())
template<typename T>
requires std::floating_point<T>
size_t set (T value, size_t index=std::numeric_limits< size_t >::max())
template<typename T>
requires std::integral<T>
size_t set (T value, size_t index=std::numeric_limits< size_t >::max())
virtual size_t size () const override
virtual bool toBoolean (bool default_value=false) const override
virtual double toFloat (double default_value=0.0) const override
virtual int64_t toInteger (int64_t default_value=0) const override
virtual UString toString (const UString &default_value=UString()) const override
virtual Type type () const override
virtual const Value & value (const UString &name) const
virtual Value & value (const UString &name, bool create=false, Type type=Type::Object)
virtual ValuePtr valuePtr (const UString &name)

Protected Member Functions

virtual void addFloat (const UString &name, double value)
virtual void addInteger (const UString &name, int64_t value)
virtual void addString (const UString &name, const UString &value)
virtual void addValue (const UString &name, const ValuePtr &value)
virtual size_t setFloat (double value, size_t index)
virtual size_t setInteger (int64_t value, size_t index)
virtual size_t setString (const UString &value, size_t index)
virtual size_t setValue (const ValuePtr &value, size_t index)

Detailed Description

Implementation of a JSON string.

Constructor & Destructor Documentation

◆ String()

ts::json::String::String ( const UString & value = UString())
inline

Constructor.

Parameters
[in]valueInitial string value.

Member Function Documentation

◆ type()

virtual Type ts::json::String::type ( ) const
overridevirtual

Get the JSON value type.

Returns
The JSON value type.

Implements ts::json::Value.

◆ isString()

virtual bool ts::json::String::isString ( ) const
overridevirtual

Check if this instance is a JSON string.

Returns
True if this instance is a JSON string.

Reimplemented from ts::json::Value.

◆ print()

virtual void ts::json::String::print ( TextFormatter & output) const
overridevirtual

Format the value as JSON text.

Parameters
[in,out]outputThe output object to format.

Implements ts::json::Value.

◆ toBoolean()

virtual bool ts::json::String::toBoolean ( bool default_value = false) const
overridevirtual

Convert this instance to a boolean.

Parameters
[in]default_valueDefault value to return when no conversion is possible.
Returns
The boolean value of this instance or default_value if no conversion is possible. For numbers, zero is false, all other values are true. For string, "yes", "true", "on" and non-zero integers are true; "no", "false", "off" and zero integers are false.

Reimplemented from ts::json::Value.

◆ toInteger()

virtual int64_t ts::json::String::toInteger ( int64_t default_value = 0) const
overridevirtual

Convert this instance to an integer.

Parameters
[in]default_valueDefault value to return when no conversion is possible.
Returns
The integer value of this instance or default_value if no conversion is possible. Strings containing integers are converted.

Reimplemented from ts::json::Value.

◆ toFloat()

virtual double ts::json::String::toFloat ( double default_value = 0.0) const
overridevirtual

Convert this instance to a double-precision float.

Parameters
[in]default_valueDefault value to return when no conversion is possible.
Returns
The floating-point value of this instance or default_value if no conversion is possible. Strings containing floats are converted.

Reimplemented from ts::json::Value.

◆ toString()

virtual UString ts::json::String::toString ( const UString & default_value = UString()) const
overridevirtual

Convert this instance to a string.

Parameters
[in]default_valueDefault value to return when no conversion is possible.
Returns
The string value of this instance or default_value if no conversion is possible.

Reimplemented from ts::json::Value.

◆ size()

virtual size_t ts::json::String::size ( ) const
overridevirtual

Get the "size" of the value.

Returns
The size of the value: the number of characters for strings, of fields for objects, of elements for arrays, zero for other types.

Reimplemented from ts::json::Value.

◆ clear()

virtual void ts::json::String::clear ( )
overridevirtual

Clear the content of the value;

Reimplemented from ts::json::Value.

◆ printed()

virtual UString ts::json::Value::printed ( size_t indent = 2,
Report & report = (ts::NullReport::Instance()) ) const
virtualinherited

Format the value as structured JSON text.

Parameters
[in]indentIndentation width of each level.
[in,out]reportWhere to report errors.
Returns
The formatted JSON text.

◆ oneLiner()

virtual UString ts::json::Value::oneLiner ( Report & report = (ts::NullReport::Instance())) const
virtualinherited

Format the value as a one-liner JSON text.

Parameters
[in,out]reportWhere to report errors.
Returns
The formatted one-line JSON text.

◆ save()

virtual bool ts::json::Value::save ( const fs::path & fileName,
size_t indent = 2,
bool stdOutputIfEmpty = false,
Report & report = (ts::NullReport::Instance()) )
virtualinherited

Save the value as a JSON file.

Parameters
[in]fileNameName of the JSON file to save.
[in]indentIndentation width of each level.
[in]stdOutputIfEmptyIf true and if fileName is empty or "-", writes to the standard output.
[in,out]reportWhere to report errors.
Returns
True on success, false on error.

◆ isNull()

virtual bool ts::json::Value::isNull ( ) const
virtualinherited

Check if this instance is a JSON null literal.

Returns
True if this instance is a JSON null literal.

Reimplemented in ts::json::Null.

◆ isTrue()

virtual bool ts::json::Value::isTrue ( ) const
virtualinherited

Check if this instance is a JSON true literal.

Returns
True if this instance is a JSON true literal.

Reimplemented in ts::json::True.

◆ isFalse()

virtual bool ts::json::Value::isFalse ( ) const
virtualinherited

Check if this instance is a JSON false literal.

Returns
True if this instance is a JSON false literal.

Reimplemented in ts::json::False.

◆ isNumber()

virtual bool ts::json::Value::isNumber ( ) const
virtualinherited

Check if this instance is a JSON number.

Returns
True if this instance is a JSON number.

Reimplemented in ts::json::Number.

◆ isInteger()

virtual bool ts::json::Value::isInteger ( ) const
virtualinherited

Check if this instance is a JSON number and an integer value (an integral value).

Returns
True if this instance is a JSON number and an integer value.

Reimplemented in ts::json::Number.

◆ isObject()

virtual bool ts::json::Value::isObject ( ) const
virtualinherited

Check if this instance is a JSON object.

Returns
True if this instance is a JSON object.

Reimplemented in ts::json::Object.

◆ isArray()

virtual bool ts::json::Value::isArray ( ) const
virtualinherited

Check if this instance is a JSON array.

Returns
True if this instance is a JSON array.

Reimplemented in ts::json::Array.

◆ getNames()

virtual void ts::json::Value::getNames ( UStringList & names) const
virtualinherited

Get all field names in an object.

Parameters
[out]namesReceive the list of field names.

Reimplemented in ts::json::Object.

◆ value() [1/2]

virtual const Value & ts::json::Value::value ( const UString & name) const
virtualinherited

Get the value of an object field (const version).

Parameters
[in]nameField name.
Returns
For a JSON object, return a constant reference to the given element. When the field does not exist or for other types of JSON values, return a reference to a null JSON.

Reimplemented in ts::json::Object.

◆ value() [2/2]

virtual Value & ts::json::Value::value ( const UString & name,
bool create = false,
Type type = Type::Object )
virtualinherited

Get the value of an object field (modifiable version).

Parameters
[in]nameField name.
[in]createIf true and the field does not exist, create it.
[in]typeWhen the field is created, provide the object type.
Returns
For a JSON object, return a reference to the given element. When the field does not exist or for other types of JSON values, return a reference to a null JSON.

Reimplemented in ts::json::Object.

◆ valuePtr()

virtual ValuePtr ts::json::Value::valuePtr ( const UString & name)
virtualinherited

Get the value of an object field (pointer version). Must be a non-const object since we can potentially modify the field.

Parameters
[in]nameField name.
Returns
For a JSON object, return a safe pointer to the given element. When the field does not exist or for other types of JSON values, return a null pointer.

Reimplemented in ts::json::Object.

◆ remove()

virtual void ts::json::Value::remove ( const UString & name)
virtualinherited

Remove a field from an object.

Parameters
[in]nameField name.

Reimplemented in ts::json::Object.

◆ extract()

virtual ValuePtr ts::json::Value::extract ( const UString & name)
virtualinherited

Extract a field from an object. The field is removed but its previous content is returned.

Parameters
[in]nameField name.
Returns
A smart pointer to the extracted content or a null pointer if the field does not exist.

Reimplemented in ts::json::Object.

◆ add() [1/4]

void ts::json::Value::add ( const UString & name,
const ValuePtr & value )
inlineinherited

Add a field into an object.

Parameters
[in]nameField name.
[in]valueSmart pointer to a JSON value. The pointed object is shared.

◆ add() [2/4]

template<typename T>
requires std::integral<T>
void ts::json::Value::add ( const UString & name,
T value )
inlineinherited

Add an integer number field into an object.

Template Parameters
TAn integer type.
Parameters
[in]nameField name.
[in]valueField value.

◆ add() [3/4]

template<typename T>
requires std::floating_point<T>
void ts::json::Value::add ( const UString & name,
T value )
inlineinherited

Add a floating-point number field into an object.

Template Parameters
TA floating-point type.
Parameters
[in]nameField name.
[in]valueField value.

◆ add() [4/4]

void ts::json::Value::add ( const UString & name,
const UString & value )
inlineinherited

Add a string field into an object.

Parameters
[in]nameField name.
[in]valueField value.

◆ at() [1/2]

virtual const Value & ts::json::Value::at ( size_t index) const
virtualinherited

Get an element of an array (const version).

Parameters
[in]indexIndex to fetch in the array.
Returns
For a JSON array, return a constant reference to the given element. When out of bound or for other types of JSON values, return a reference to a null JSON.

Reimplemented in ts::json::Array.

◆ at() [2/2]

virtual Value & ts::json::Value::at ( size_t index)
virtualinherited

Get an element of an array (modifiable version).

Parameters
[in]indexIndex to fetch in the array.
Returns
For a JSON array, return a reference to the given element. When out of bound or for other types of JSON values, return a reference to a null JSON.

Reimplemented in ts::json::Array.

◆ set() [1/4]

size_t ts::json::Value::set ( const ValuePtr & value,
size_t index = std::numeric_limits<size_t>::max() )
inlineinherited

Set an element of an array.

Parameters
[in]valueSmart pointer to a JSON value. The pointed object is shared.
[in]indexIndex to fetch in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

◆ set() [2/4]

template<typename T>
requires std::integral<T>
size_t ts::json::Value::set ( T value,
size_t index = std::numeric_limits<size_t>::max() )
inlineinherited

Set an integer number element of an array.

Template Parameters
TAn integer type.
Parameters
[in]valueValue to set.
[in]indexIndex in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

◆ set() [3/4]

template<typename T>
requires std::floating_point<T>
size_t ts::json::Value::set ( T value,
size_t index = std::numeric_limits<size_t>::max() )
inlineinherited

Set a floating-point number element of an array.

Template Parameters
TA floating-point type.
Parameters
[in]valueValue to set.
[in]indexIndex in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

◆ set() [4/4]

size_t ts::json::Value::set ( const UString & value,
size_t index = std::numeric_limits<size_t>::max() )
inlineinherited

Set a string element of an array.

Parameters
[in]valueValue to set.
[in]indexIndex in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

◆ erase()

virtual void ts::json::Value::erase ( size_t index,
size_t count = 1 )
virtualinherited

Erase elements from an array.

Parameters
[in]indexIndex to erase in the array. Ignored if out of bound.
[in]countNumber of elements to erase.

Reimplemented in ts::json::Array.

◆ extractAt()

virtual ValuePtr ts::json::Value::extractAt ( size_t index)
virtualinherited

Extract an element from an array. The element is removed but its previous content is returned.

Parameters
[in]indexIndex to erase in the array. Ignored if out of bound.
Returns
A smart pointer to the extracted content or a null pointer if the element does not exist.

Reimplemented in ts::json::Array.

◆ query() [1/2]

virtual const Value & ts::json::Value::query ( const UString & path) const
virtualinherited

Query a JSON value using a composite path.

Parameters
[in]pathFull path from this object to final object. May contain object field names and array indexes. Example: "obj1.arr[3].obj2". If this object is an array, the path must start with a index (example: "[3].obj2"). If the path is empty, this object is returned.
Returns
A reference to the final object or a reference to a null JSON if not found.

Reimplemented in ts::json::Array, and ts::json::Object.

◆ query() [2/2]

virtual Value & ts::json::Value::query ( const UString & path,
bool create = false,
Type type = Type::Object )
virtualinherited

Query a JSON value using a composite path, creating intermediate objects when necessary.

Parameters
[in]pathFull path from this object to final object. May contain object field names and array indexes. Example: "obj1.arr[3].obj2". If this object is an array, the path must start with a index (example: "[3].obj2"). When an array index is empty and create is true, a new element is created at the end of the array (example: "obj1.arr[].obj2"). If the path is empty, this object is returned.
[in]createIf true create all missing intermediate objects.
[in]typeWhen the final field is created, provide the object type.
Returns
A reference to the final object. When the field does not exist or could not be created, return a reference to a null JSON.

Reimplemented in ts::json::Array, and ts::json::Object.

◆ addValue()

virtual void ts::json::Value::addValue ( const UString & name,
const ValuePtr & value )
protectedvirtualinherited

Add a field into an object.

Parameters
[in]nameField name.
[in]valueSmart pointer to a JSON value. The pointed object is shared.

Reimplemented in ts::json::Object.

◆ addInteger()

virtual void ts::json::Value::addInteger ( const UString & name,
int64_t value )
protectedvirtualinherited

Add a 64-bit signed integer number field into an object.

Parameters
[in]nameField name.
[in]valueField value.

Reimplemented in ts::json::Object.

◆ addFloat()

virtual void ts::json::Value::addFloat ( const UString & name,
double value )
protectedvirtualinherited

Add a double-precision floating-point number field into an object.

Parameters
[in]nameField name.
[in]valueField value.

Reimplemented in ts::json::Object.

◆ addString()

virtual void ts::json::Value::addString ( const UString & name,
const UString & value )
protectedvirtualinherited

Add a string field into an object.

Parameters
[in]nameField name.
[in]valueField value.

Reimplemented in ts::json::Object.

◆ setValue()

virtual size_t ts::json::Value::setValue ( const ValuePtr & value,
size_t index )
protectedvirtualinherited

Set an element of an array.

Parameters
[in]valueSmart pointer to a JSON value. The pointed object is shared.
[in]indexIndex to fetch in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

Reimplemented in ts::json::Array.

◆ setInteger()

virtual size_t ts::json::Value::setInteger ( int64_t value,
size_t index )
protectedvirtualinherited

Set a 64-bit signed integer number element of an array.

Parameters
[in]valueValue to set.
[in]indexIndex in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

Reimplemented in ts::json::Array.

◆ setFloat()

virtual size_t ts::json::Value::setFloat ( double value,
size_t index )
protectedvirtualinherited

Set a double-precision floating-point number element of an array.

Parameters
[in]valueValue to set.
[in]indexIndex in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

Reimplemented in ts::json::Array.

◆ setString()

virtual size_t ts::json::Value::setString ( const UString & value,
size_t index )
protectedvirtualinherited

Set a string element of an array.

Parameters
[in]valueValue to set.
[in]indexIndex in the array. If out of bound, the value is added at the end of the array.
Returns
The actual index of the added value.

Reimplemented in ts::json::Array.


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