Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions
json_dumper.h File Reference
#include "ws_symbol_export.h"
#include <inttypes.h>
#include <stdbool.h>
#include <stdio.h>
#include <glib.h>

Go to the source code of this file.

Classes

struct  json_dumper
 

Macros

#define JSON_DUMPER_MAX_DEPTH   1100
 
#define JSON_DUMPER_FLAGS_PRETTY_PRINT   (1 << 0) /* Enable pretty printing. */
 
#define JSON_DUMPER_DOT_TO_UNDERSCORE   (1 << 1) /* Convert dots to underscores in keys */
 
#define JSON_DUMPER_FLAGS_NO_DEBUG   (1 << 17) /* Disable fatal ws_error messages on error(intended for speeding up fuzzing). */
 

Typedefs

typedef struct json_dumper json_dumper
 

Functions

WS_DLL_PUBLIC void json_dumper_begin_object (json_dumper *dumper)
 Begins a new JSON object.
 
WS_DLL_PUBLIC void json_dumper_set_member_name (json_dumper *dumper, const char *name)
 Sets the name of the next member in a JSON object.
 
WS_DLL_PUBLIC void json_dumper_end_object (json_dumper *dumper)
 Ends the current JSON object.
 
WS_DLL_PUBLIC void json_dumper_begin_array (json_dumper *dumper)
 Begins a new JSON array.
 
WS_DLL_PUBLIC void json_dumper_end_array (json_dumper *dumper)
 Ends the current JSON array.
 
WS_DLL_PUBLIC void json_dumper_value_string (json_dumper *dumper, const char *value)
 Writes a string value to the JSON output.
 
WS_DLL_PUBLIC void json_dumper_value_double (json_dumper *dumper, double value)
 Writes a double-precision numeric value to the JSON output.
 
WS_DLL_PUBLIC void json_dumper_value_anyf (json_dumper *dumper, const char *format,...) G_GNUC_PRINTF(2
 Writes a formatted literal value to the JSON output.
 
WS_DLL_PUBLIC void WS_DLL_PUBLIC void json_dumper_value_va_list (json_dumper *dumper, const char *format, va_list ap)
 Writes a formatted literal value using a va_list.
 
WS_DLL_PUBLIC void json_dumper_begin_base64 (json_dumper *dumper)
 Begins a base64-encoded data block.
 
WS_DLL_PUBLIC void json_dumper_end_base64 (json_dumper *dumper)
 Ends a base64-encoded data block.
 
WS_DLL_PUBLIC void json_dumper_write_base64 (json_dumper *dumper, const unsigned char *data, size_t len)
 Writes binary data in base64 format.
 
WS_DLL_PUBLIC bool json_dumper_finish (json_dumper *dumper)
 Finalizes the JSON output.
 

Detailed Description

Routines for serializing data as JSON.

Copyright 2018, Peter Wu peter.nosp@m.@lek.nosp@m.enste.nosp@m.yn.n.nosp@m.l

Wireshark - Network traffic analyzer By Gerald Combs geral.nosp@m.d@wi.nosp@m.resha.nosp@m.rk.o.nosp@m.rg Copyright 1998 Gerald Combs

SPDX-License-Identifier: GPL-2.0-or-later

Macro Definition Documentation

◆ JSON_DUMPER_MAX_DEPTH

#define JSON_DUMPER_MAX_DEPTH   1100

Example:

json_dumper dumper = { .output_file = stdout, // or .output_string = g_string_new(NULL) .flags = JSON_DUMPER_FLAGS_PRETTY_PRINT, }; json_dumper_begin_object(&dumper); json_dumper_set_member_name(&dumper, "key"); json_dumper_value_string(&dumper, "value"); json_dumper_set_member_name(&dumper, "array"); json_dumper_begin_array(&dumper); json_dumper_value_anyf(&dumper, "true"); json_dumper_value_double(&dumper, 1.0); json_dumper_begin_base64(&dumper); json_dumper_write_base64(&dumper, (const unsigned char *)"abcd", 4); json_dumper_write_base64(&dumper, (const unsigned char *)"1234", 4); json_dumper_end_base64(&dumper); json_dumper_begin_object(&dumper); json_dumper_end_object(&dumper); json_dumper_begin_array(&dumper); json_dumper_end_array(&dumper); json_dumper_end_array(&dumper); json_dumper_end_object(&dumper); json_dumper_finish(&dumper); Maximum object/array nesting depth.

Function Documentation

◆ json_dumper_begin_array()

WS_DLL_PUBLIC void json_dumper_begin_array ( json_dumper dumper)

Begins a new JSON array.

Starts a JSON array context. Must be paired with a call to json_dumper_end_array().

Parameters
dumperThe JSON dumper context.

◆ json_dumper_begin_base64()

WS_DLL_PUBLIC void json_dumper_begin_base64 ( json_dumper dumper)

Begins a base64-encoded data block.

Starts a base64 encoding context for binary data. Must be paired with json_dumper_end_base64().

Parameters
dumperThe JSON dumper context.

◆ json_dumper_begin_object()

WS_DLL_PUBLIC void json_dumper_begin_object ( json_dumper dumper)

Begins a new JSON object.

Starts a JSON object context. Must be paired with a call to json_dumper_end_object().

Parameters
dumperThe JSON dumper context.

◆ json_dumper_end_array()

WS_DLL_PUBLIC void json_dumper_end_array ( json_dumper dumper)

Ends the current JSON array.

Closes the current array context started by json_dumper_begin_array().

Parameters
dumperThe JSON dumper context.

◆ json_dumper_end_base64()

WS_DLL_PUBLIC void json_dumper_end_base64 ( json_dumper dumper)

Ends a base64-encoded data block.

Closes the base64 encoding context started by json_dumper_begin_base64().

Parameters
dumperThe JSON dumper context.

◆ json_dumper_end_object()

WS_DLL_PUBLIC void json_dumper_end_object ( json_dumper dumper)

Ends the current JSON object.

Closes the current object context started by json_dumper_begin_object().

Parameters
dumperThe JSON dumper context.

◆ json_dumper_finish()

WS_DLL_PUBLIC bool json_dumper_finish ( json_dumper dumper)

Finalizes the JSON output.

Completes the JSON dump and checks for structural correctness (e.g., matching open/close calls).

Parameters
dumperThe JSON dumper context.
Returns
true if the output is valid and complete, false if errors occurred.

◆ json_dumper_set_member_name()

WS_DLL_PUBLIC void json_dumper_set_member_name ( json_dumper dumper,
const char *  name 
)

Sets the name of the next member in a JSON object.

Specifies the key for the next value to be written inside an open JSON object.

Parameters
dumperThe JSON dumper context.
nameThe name of the member key.

◆ json_dumper_value_anyf()

WS_DLL_PUBLIC void json_dumper_value_anyf ( json_dumper dumper,
const char *  format,
  ... 
)

Writes a formatted literal value to the JSON output.

Dumps a literal value such as a number, "true", "false", or "null" using printf-style formatting.

Parameters
dumperThe JSON dumper context.
formatThe format string for the value.
...Additional arguments for formatting.

◆ json_dumper_value_double()

WS_DLL_PUBLIC void json_dumper_value_double ( json_dumper dumper,
double  value 
)

Writes a double-precision numeric value to the JSON output.

Adds a floating-point number to the current object or array.

Parameters
dumperThe JSON dumper context.
valueThe double value to write.

◆ json_dumper_value_string()

WS_DLL_PUBLIC void json_dumper_value_string ( json_dumper dumper,
const char *  value 
)

Writes a string value to the JSON output.

Adds a properly escaped string value to the current object or array.

Parameters
dumperThe JSON dumper context.
valueThe string value to write.

◆ json_dumper_value_va_list()

WS_DLL_PUBLIC void WS_DLL_PUBLIC void json_dumper_value_va_list ( json_dumper dumper,
const char *  format,
va_list  ap 
)

Writes a formatted literal value using a va_list.

Similar to json_dumper_value_anyf(), but accepts a va_list for formatting. String values must be properly quoted and escaped by the caller. Not safe for untrusted input.

Parameters
dumperThe JSON dumper context.
formatThe format string for the value.
apThe va_list of arguments.

◆ json_dumper_write_base64()

WS_DLL_PUBLIC void json_dumper_write_base64 ( json_dumper dumper,
const unsigned char *  data,
size_t  len 
)

Writes binary data in base64 format.

Encodes and writes the given binary data as base64 within an active base64 context.

Parameters
dumperThe JSON dumper context.
dataPointer to the binary data.
lenLength of the binary data in bytes.