json

May 15, 2026 ยท View on GitHub

{#jsonmodule}

json

JSON serialization using nlohmann/json.

Namespaces

NameDescription
jsonJSON value aliases, serialization helpers, and file utilities built on nlohmann/json.

{#json}

json

JSON value aliases, serialization helpers, and file utilities built on nlohmann/json.

Classes

NameDescription
ConfigurationJSON configuration file
ISerializableAbstract interface for JSON-serializable objects.

Typedefs

ReturnNameDescription
nlohmann::jsonValuePrimary JSON value type used throughout the library.

{#value}

Value

using Value = nlohmann::json

Primary JSON value type used throughout the library.

Functions

ReturnNameDescription
boolserialize inlineSerializes pObj to a pretty-printed JSON string.
booldeserialize inlineDeserializes pObj from a JSON string.
voidloadFile inlineLoad a JSON file into a value. Throws on missing file or parse error.
voidsaveFile inlineSave a JSON value to a file. Throws on write error.
voidassertMember inlineAssert that a required member exists. Throws if missing.
voidcountNestedKeys inlineCount how many nested objects contain the given key.
boolhasNestedKey inlineReturn true if any nested object contains the given key.
boolfindNestedObjectWithProperty inlineFind a nested object whose property matches the given key/value.

{#serialize}

serialize

inline

inline bool serialize(ISerializable * pObj, std::string & output)

Serializes pObj to a pretty-printed JSON string.

Parameters

  • pObj Object to serialize; must not be null.

  • output Receives the 4-space indented JSON string.

Returns

true on success, false if pObj is null.


{#deserialize}

deserialize

inline

inline bool deserialize(ISerializable * pObj, std::string & input)

Deserializes pObj from a JSON string.

Parameters

  • pObj Object to populate; must not be null.

  • input JSON string to parse.

Returns

true on success, false if pObj is null or parsing fails.


{#loadfile}

loadFile

inline

inline void loadFile(const std::string & path, json::Value & root)

Load a JSON file into a value. Throws on missing file or parse error.


{#savefile-1}

saveFile

inline

inline void saveFile(const std::string & path, const json::Value & root, int indent = 4)

Save a JSON value to a file. Throws on write error.


{#assertmember}

assertMember

inline

inline void assertMember(const json::Value & root, const std::string & name)

Assert that a required member exists. Throws if missing.


{#countnestedkeys}

countNestedKeys

inline

inline void countNestedKeys(const json::Value & root, const std::string & key, int & count)

Count how many nested objects contain the given key.


{#hasnestedkey}

hasNestedKey

inline

inline bool hasNestedKey(const json::Value & root, const std::string & key)

Return true if any nested object contains the given key.


{#findnestedobjectwithproperty}

findNestedObjectWithProperty

inline

inline bool findNestedObjectWithProperty(json::Value & root, json::Value *& result, std::string_view key, std::string_view value, bool partial = true, int index = 0)

Find a nested object whose property matches the given key/value.

Key or value may be empty for wildcard matching. If partial is true, substring matches are accepted for string values. The index parameter selects the Nth match (0 = first).

Returns true if found, with result pointing to the matching object.

{#configuration-1}

Configuration

#include <icy/json/configuration.h>
class Configuration

Defined in src/json/include/icy/json/configuration.h:28

Inherits: Configuration

JSON configuration file

See base Configuration for all accessors

List of all members

NameKindOwner
rootvariableDeclared here
ConfigurationfunctionDeclared here
~ConfigurationfunctionDeclared here
loadfunctionDeclared here
loadfunctionDeclared here
savefunctionDeclared here
removefunctionDeclared here
removeAllfunctionDeclared here
replacefunctionDeclared here
keysfunctionDeclared here
printfunctionDeclared here
pathfunctionDeclared here
loadedfunctionDeclared here
_loadedvariableDeclared here
_pathvariableDeclared here
_mutexvariableDeclared here
getRawfunctionDeclared here
setRawfunctionDeclared here
PropertyChangedvariableInherited from Configuration
_mutexvariableInherited from Configuration
ConfigurationfunctionInherited from Configuration
~ConfigurationfunctionInherited from Configuration
existsfunctionInherited from Configuration
getStringfunctionInherited from Configuration
getStringfunctionInherited from Configuration
getRawStringfunctionInherited from Configuration
getRawStringfunctionInherited from Configuration
getIntfunctionInherited from Configuration
getIntfunctionInherited from Configuration
getLargeIntfunctionInherited from Configuration
getLargeIntfunctionInherited from Configuration
getDoublefunctionInherited from Configuration
getDoublefunctionInherited from Configuration
getBoolfunctionInherited from Configuration
getBoolfunctionInherited from Configuration
setStringfunctionInherited from Configuration
setIntfunctionInherited from Configuration
setLargeIntfunctionInherited from Configuration
setDoublefunctionInherited from Configuration
setBoolfunctionInherited from Configuration
getRawfunctionInherited from Configuration
setRawfunctionInherited from Configuration
ConfigurationfunctionInherited from Configuration
operator=functionInherited from Configuration
ConfigurationfunctionInherited from Configuration
operator=functionInherited from Configuration
parseIntfunctionInherited from Configuration
parseLargeIntfunctionInherited from Configuration
parseBoolfunctionInherited from Configuration

Inherited from Configuration

KindNameDescription
variablePropertyChangedThe Key and Value of the changed configuration property.
variable_mutex
functionConfigurationCreates the Configuration.
function~Configuration virtualDestroys the Configuration.
functionexists constReturns true if the property with the given key exists.
functiongetString constReturns the string value of the property with the given name. Throws a NotFoundException if the key does not exist.
functiongetString constIf a property with the given key exists, returns the property's string value, otherwise returns the given default value.
functiongetRawString constReturns the raw string value of the property with the given name. Throws a NotFoundException if the key does not exist. References to other properties are not expanded.
functiongetRawString constIf a property with the given key exists, returns the property's raw string value, otherwise returns the given default value. References to other properties are not expanded.
functiongetInt constReturns the int value of the property with the given name. Throws a NotFoundException if the key does not exist. Throws a SyntaxException if the property can not be converted to an int. Numbers starting with 0x are treated as hexadecimal.
functiongetInt constIf a property with the given key exists, returns the property's int value, otherwise returns the given default value. Throws a SyntaxException if the property can not be converted to an int. Numbers starting with 0x are treated as hexadecimal.
functiongetLargeInt constReturns the int value of the property with the given name. Throws a NotFoundException if the key does not exist. Throws a SyntaxException if the property can not be converted to an int. Numbers starting with 0x are treated as hexadecimal.
functiongetLargeInt constIf a property with the given key exists, returns the property's int value, otherwise returns the given default value. Throws a SyntaxException if the property can not be converted to an int. Numbers starting with 0x are treated as hexadecimal.
functiongetDouble constReturns the double value of the property with the given name. Throws a NotFoundException if the key does not exist. Throws a SyntaxException if the property can not be converted to a double.
functiongetDouble constIf a property with the given key exists, returns the property's double value, otherwise returns the given default value. Throws a SyntaxException if the property can not be converted to an double.
functiongetBool constReturns the double value of the property with the given name. Throws a NotFoundException if the key does not exist. Throws a SyntaxException if the property can not be converted to a double.
functiongetBool constIf a property with the given key exists, returns the property's bool value, otherwise returns the given default value. Throws a SyntaxException if the property can not be converted to a boolean. The following string values can be converted into a boolean:
functionsetStringSets the property with the given key to the given value. An already existing value for the key is overwritten.
functionsetIntSets the property with the given key to the given value. An already existing value for the key is overwritten.
functionsetLargeIntSets the property with the given key to the given value. An already existing value for the key is overwritten.
functionsetDoubleSets the property with the given key to the given value. An already existing value for the key is overwritten.
functionsetBoolSets the property with the given key to the given value. An already existing value for the key is overwritten.
functiongetRaw virtual constIf the property with the given key exists, stores the property's value in value and returns true. Otherwise, returns false.
functionsetRaw virtualSets the property with the given key to the given value. An already existing value for the key is overwritten.
functionConfigurationDeleted constructor.
functionoperator=Deleted assignment operator.
functionConfigurationDeleted constructor.
functionoperator=Deleted assignment operator.
functionparseInt staticParses a decimal or 0x-prefixed hexadecimal string to int.
functionparseLargeInt staticParses a decimal or 0x-prefixed hexadecimal string to int64.
functionparseBool staticParses a boolean string (true/false/yes/no/on/off/0/1, case-insensitive).

Public Attributes

ReturnNameDescription
json::Valueroot

{#root}

root

json::Value root

Defined in src/json/include/icy/json/configuration.h:80

Public Methods

ReturnNameDescription
Configuration
~Configuration virtualDestroys the Configuration.
voidload virtualSets the file path and loads the configuration.
voidload virtualReloads the configuration from the previously set path. Silently ignores parse errors (e.g. empty file).
voidsave virtualWrites the current JSON root to the file at the stored path.
boolremove virtualRemoves the top-level key key from the JSON root.
voidremoveAll virtualRemoves all top-level keys whose names contain baseKey as a substring.
voidreplace virtualPerforms a global string substitution on the serialized JSON, replacing all occurrences of from with to, then re-parses.
voidkeys virtualPopulates keys with all top-level key names containing baseKey as a substring.
voidprint virtualWrites the pretty-printed JSON to ost with 4-space indentation.
std::stringpath virtualReturns the file path that was passed to load().
boolloaded virtualReturns true if load() has been called at least once.

{#configuration-2}

Configuration

Configuration()

Defined in src/json/include/icy/json/configuration.h:31


{#configuration-3}

~Configuration

virtual

virtual ~Configuration()

Defined in src/json/include/icy/json/configuration.h:32

Destroys the Configuration.

Reimplements

{#load}

load

virtual

virtual void load(const std::string & path, bool create = false)

Defined in src/json/include/icy/json/configuration.h:38

Sets the file path and loads the configuration.

Parameters

  • path Absolute or relative path to the JSON file.

  • create Reserved for future use (currently unused).

Exceptions

  • std::runtime_error if the path is empty.

{#load-1}

load

virtual

virtual void load(bool create = false)

Defined in src/json/include/icy/json/configuration.h:44

Reloads the configuration from the previously set path. Silently ignores parse errors (e.g. empty file).

Parameters

  • create Reserved for future use (currently unused).

Exceptions

  • std::runtime_error if the path has not been set.

{#save}

save

virtual

virtual void save()

Defined in src/json/include/icy/json/configuration.h:48

Writes the current JSON root to the file at the stored path.

Exceptions

  • std::runtime_error if the path is empty or the file cannot be written.

{#remove}

remove

virtual

virtual bool remove(const std::string & key)

Defined in src/json/include/icy/json/configuration.h:53

Removes the top-level key key from the JSON root.

Parameters

  • key Key to remove.

Returns

true if the key existed and was removed.


{#removeall}

removeAll

virtual

virtual void removeAll(const std::string & baseKey)

Defined in src/json/include/icy/json/configuration.h:57

Removes all top-level keys whose names contain baseKey as a substring.

Parameters

  • baseKey Substring to match against key names.

{#replace-2}

replace

virtual

virtual void replace(const std::string & from, const std::string & to)

Defined in src/json/include/icy/json/configuration.h:63

Performs a global string substitution on the serialized JSON, replacing all occurrences of from with to, then re-parses.

Parameters

  • from Substring to find.

  • to Replacement string.


{#keys}

keys

virtual

virtual void keys(std::vector< std::string > & keys, const std::string & baseKey = "")

Defined in src/json/include/icy/json/configuration.h:68

Populates keys with all top-level key names containing baseKey as a substring.

Parameters

  • keys Output vector to append matching key names to.

  • baseKey Filter substring; empty string matches all keys.


{#print-8}

print

virtual

virtual void print(std::ostream & ost)

Defined in src/json/include/icy/json/configuration.h:72

Writes the pretty-printed JSON to ost with 4-space indentation.

Parameters

  • ost Output stream.

{#path-1}

path

virtual

virtual std::string path()

Defined in src/json/include/icy/json/configuration.h:75

Returns the file path that was passed to load().


{#loaded}

loaded

virtual

virtual bool loaded()

Defined in src/json/include/icy/json/configuration.h:78

Returns true if load() has been called at least once.

Protected Attributes

ReturnNameDescription
bool_loaded
std::string_path
std::mutex_mutex

{#_loaded}

_loaded

bool _loaded

Defined in src/json/include/icy/json/configuration.h:94


{#_path-3}

_path

std::string _path

Defined in src/json/include/icy/json/configuration.h:95


{#_mutex-9}

_mutex

std::mutex _mutex

Defined in src/json/include/icy/json/configuration.h:96

Protected Methods

ReturnNameDescription
boolgetRaw virtual const overrideRetrieves the string value for key from the JSON root.
voidsetRaw virtual overrideStores value under key in the JSON root and emits PropertyChanged.

{#getraw}

getRaw

virtual const override

virtual bool getRaw(const std::string & key, std::string & value) const override

Defined in src/json/include/icy/json/configuration.h:87

Retrieves the string value for key from the JSON root.

Parameters

  • key Top-level JSON key.

  • value Set to the string value if the key exists.

Returns

true if the key was found, false otherwise.

Reimplements

{#setraw}

setRaw

virtual override

virtual void setRaw(const std::string & key, const std::string & value) override

Defined in src/json/include/icy/json/configuration.h:92

Stores value under key in the JSON root and emits PropertyChanged.

Parameters

  • key Top-level JSON key.

  • value String value to store.

Reimplements

{#iserializable}

ISerializable

#include <icy/json/iserializable.h>
class ISerializable

Defined in src/json/include/icy/json/iserializable.h:24

Subclassed by: Scheduler, Task, Trigger

Abstract interface for JSON-serializable objects.

List of all members

NameKindOwner
serializefunctionDeclared here
deserializefunctionDeclared here

Public Methods

ReturnNameDescription
voidserialize virtualSerializes this object's state into root.
voiddeserialize virtualPopulates this object's state from root.

{#serialize-1}

serialize

virtual

virtual void serialize(json::Value & root)

Defined in src/json/include/icy/json/iserializable.h:31

Serializes this object's state into root.

Parameters

  • root JSON object to populate.
Reimplemented by

{#deserialize-1}

deserialize

virtual

virtual void deserialize(json::Value & root)

Defined in src/json/include/icy/json/iserializable.h:35

Populates this object's state from root.

Parameters

Reimplemented by