JSON Serializer
- group LWJSON_SERIALIZER
JSON serializer.
Typedefs
Enums
Functions
-
lwjsonr_t lwjson_serializer_init(lwjson_serializer_t *serializer, char *user_buffer, size_t buffer_size)
Initialize JSON serializer with user buffer.
-
lwjsonr_t lwjson_serializer_finalize(lwjson_serializer_t *serializer, size_t *total_length)
Finalize serialization and get total length of serialized data.
-
lwjsonr_t lwjson_serializer_init_callback(lwjson_serializer_t *serializer, lwjson_serializer_callback_fn callback, void *ctx)
Initialize serializer with callback function.
-
lwjsonr_t lwjson_serializer_start_object(lwjson_serializer_t *serializer, const char *key, size_t key_len)
Start a new JSON object.
Creates a new JSON object in the serializer output. The object can be a root object (key is
NULL), a named object within another object (key provided), or an unnamed object within an array (key isNULL).
-
lwjsonr_t lwjson_serializer_start_array(lwjson_serializer_t *serializer, const char *key, size_t key_len)
Start a new JSON array.
Creates a new JSON array in the serializer output. The array can be a root array (key is
NULL), a named array within an object (key provided), or an unnamed array within another array (key isNULL).
-
lwjsonr_t lwjson_serializer_end_object(lwjson_serializer_t *serializer)
End current JSON object.
Closes the current JSON object by writing the closing brace
}. Must be called after all object members have been added. The number of end_object calls must match the number of start_object calls.
-
lwjsonr_t lwjson_serializer_end_array(lwjson_serializer_t *serializer)
End current JSON array.
Closes the current JSON array by writing the closing bracket
]. Must be called after all array elements have been added. The number of end_array calls must match the number of start_array calls.
-
lwjsonr_t lwjson_serializer_add_string(lwjson_serializer_t *serializer, const char *key, size_t key_len, const char *value, size_t value_len)
Add string value to JSON.
Adds a string value to the JSON output. The string is properly escaped according to JSON specification. For object members, provide a key. For array elements, set key to
NULL.- Parameters
serializer – [inout] Pointer to serializer structure. Must not be
NULL.key – [in] Key name for object member. Use
NULLfor array element.key_len – [in] Length of key string in bytes. Ignored if key is
NULL.value – [in] String value to add. Must not be
NULL.value_len – [in] Length of value string in bytes.
- Returns
-
lwjsonr_t lwjson_serializer_add_uint(lwjson_serializer_t *serializer, const char *key, size_t key_len, uint64_t value)
Add unsigned integer value to JSON.
Adds an unsigned 64-bit integer to the JSON output. The number is converted to string representation without quotes.
- Parameters
serializer – [inout] Pointer to serializer structure. Must not be
NULL.key – [in] Key name for object member. Use
NULLfor array element.key_len – [in] Length of key string in bytes. Ignored if key is
NULL.value – [in] Unsigned integer value to add (0 to 18446744073709551615).
- Returns
-
lwjsonr_t lwjson_serializer_add_int(lwjson_serializer_t *serializer, const char *key, size_t key_len, int64_t value)
Add signed integer value to JSON.
Adds a signed 64-bit integer to the JSON output. The number is converted to string representation without quotes. Negative numbers include a minus sign.
- Parameters
serializer – [inout] Pointer to serializer structure. Must not be
NULL.key – [in] Key name for object member. Use
NULLfor array element.key_len – [in] Length of key string in bytes. Ignored if key is
NULL.value – [in] Signed integer value to add (-9223372036854775808 to 9223372036854775807).
- Returns
-
lwjsonr_t lwjson_serializer_add_float(lwjson_serializer_t *serializer, const char *key, size_t key_len, double value)
Add floating point value to JSON.
Adds a double-precision floating point number to the JSON output. The number is converted to string representation using %.15g format (15 significant digits) without quotes.
- Parameters
serializer – [inout] Pointer to serializer structure. Must not be
NULL.key – [in] Key name for object member. Use
NULLfor array element.key_len – [in] Length of key string in bytes. Ignored if key is
NULL.value – [in] Floating point value to add (IEEE 754 double precision).
- Returns
-
lwjsonr_t lwjson_serializer_add_bool(lwjson_serializer_t *serializer, const char *key, size_t key_len, uint8_t value)
Add boolean value to JSON.
Adds a boolean value to the JSON output. The value is represented as
trueorfalseliteral (without quotes).- Parameters
serializer – [inout] Pointer to serializer structure. Must not be
NULL.key – [in] Key name for object member. Use
NULLfor array element.key_len – [in] Length of key string in bytes. Ignored if key is
NULL.value – [in] Boolean value (
0forfalse, non-zero fortrue).
- Returns
-
lwjsonr_t lwjson_serializer_add_null(lwjson_serializer_t *serializer, const char *key, size_t key_len)
Add null value to JSON.
Adds a null value to the JSON output. The value is represented as “null” literal (without quotes).
-
struct lwjson_serializer_default_ctx_t
- #include <lwjson_serializer.h>
Context structure for default buffered output.
-
struct lwjson_serializer_t
- #include <lwjson_serializer.h>
JSON serializer structure.
Public Members
-
lwjson_serializer_stack_type_t stack[LWJSON_CFG_SERIALIZER_MAX_STACK_DEPTH]
Stack for tracking nesting
-
int32_t top
Current top of stack
-
uint8_t need_comma
Flag indicating if comma is needed before next element
-
lwjson_serializer_callback_fn callback
Callback function for serialization
-
void *ctx
User context passed to callback
-
lwjson_serializer_default_ctx_t default_ctx
Default context for buffered output
-
lwjson_serializer_stack_type_t stack[LWJSON_CFG_SERIALIZER_MAX_STACK_DEPTH]
-
lwjsonr_t lwjson_serializer_init(lwjson_serializer_t *serializer, char *user_buffer, size_t buffer_size)