JsonSerializer#
Fully qualified name: omni::structuredlog::JsonSerializer
Defined in omni/structuredlog/JsonSerializer.h
-
template<bool validate = false, bool prettyPrint = false, OnValidationErrorFunc onValidationError = ignoreJsonSerializerValidationError>
class JsonSerializer# A utility that allows you to easily encode JSON data.
This class won’t allocate any memory unless you use an excessive number of scopes.
- Param validate:
If this is set to true, methods will return false when an invalid operation is performed. onValidationError is used for logging because this struct is used in the logging system, so OMNI_LOG_* cannot be directly called from within this class. If this is set to false, methods will assume that all calls will produce valid JSON data. Invalid calls will write out invalid JSON data. Methods will only return false if an unavoidable check failed.
- Template Parameters:
prettyPrint – If this is set to true, the output will be pretty-printed. If this is set to false, the output will have no added white space.
onValidationError – This is a callback that gets executed when a validation error is triggered, so logging can be called.
Public Functions
- inline JsonSerializer(
- JsonConsumer *consumer,
- size_t indentLen = 4,
Constructor.
- Parameters:
consumer – [in] The object that will consume the output JSON data. This may not be nullptr.
indentLen – [in] The number of spaces to indent by when pretty printing is enabled.
-
inline ~JsonSerializer()#
-
inline void reset()#
Reset the internal state back to where it was after construction.
-
inline bool writeKey(const char *key, size_t keyLen) noexcept#
Write out a JSON key for an object property.
- Parameters:
key – [in] The string value for the key. This can be nullptr.
keyLen – [in] The length of
key
, excluding the null terminator.
- Returns:
whether or not validation succeeded.
-
inline bool writeKey(const char *key) noexcept#
Write out a JSON key for an object property.
- Parameters:
key – [in] The key name for this property. This may be nullptr.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue() noexcept#
Write out a JSON null value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(bool value) noexcept#
Write out a JSON boolean value.
- Parameters:
value – [in] The boolean value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(int32_t value) noexcept#
Write out a JSON integer value.
- Parameters:
value – [in] The integer value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(uint32_t value) noexcept#
Write out a JSON integer value.
- Parameters:
value – [in] The integer value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(int64_t value) noexcept#
Write out a JSON integer value.
Note
64 bit integers are stored as double precision floats in JavaScript’s JSON library, so a JSON library with BigInt support should be used instead when reading 64 bit numbers.
- Parameters:
value – [in] The integer value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(uint64_t value) noexcept#
Write out a JSON integer value.
Note
64 bit integers are stored as double precision floats in JavaScript’s JSON library, so a JSON library with BigInt support should be used instead when reading 64 bit numbers.
- Parameters:
value – [in] The integer value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(double value) noexcept#
Write out a JSON double (aka number) value.
- Parameters:
value – [in] The double value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(float value) noexcept#
Write out a JSON float (aka number) value.
- Parameters:
value – [in] The double value.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(const char *value, size_t len) noexcept#
Write out a JSON string value.
- Parameters:
value – [in] The string value. This can be nullptr if
len
is 0.len – [in] The length of
value
, excluding the null terminator.
- Returns:
whether or not validation succeeded.
-
inline bool writeValue(const char *value) noexcept#
Write out a JSON string value.
- Parameters:
value – [in] The string value. This can be nullptr.
- Returns:
whether or not validation succeeded.
- inline bool writeValueWithBase64Encoding(
- const void *value_,
- size_t size,
Write a binary blob into the output JSON as a base64 encoded string.
Remark
This will take the input string and encode it in base64, then store that as base64 data in a string.
- Parameters:
value_ – [in] The binary blob to write in.
size – [in] The number of bytes of data in
value_
.
- Returns:
whether or not validation succeeded.
-
inline bool openArray() noexcept#
Begin a JSON array.
- Returns:
whether or not validation succeeded.
- Returns:
false if a memory allocation failed.
-
inline bool closeArray() noexcept#
Finish writing a JSON array.
- Returns:
whether or not validation succeeded.
-
inline bool openObject() noexcept#
Begin a JSON object.
- Returns:
whether or not validation succeeded.
- Returns:
false if a memory allocation failed.
-
inline bool closeObject() noexcept#
Finish writing a JSON object.
- Returns:
whether or not validation succeeded.
-
inline bool finish() noexcept#
Finish writing your JSON.
- Returns:
whether or not validation succeeded.
Public Members
-
OnValidationErrorFunc m_onValidationError = onValidationError#
The function that will be called when a validation error occurs.