26#ifndef MYSQLSHDK_LIBS_UTILS_UTILS_JSON_H_
27#define MYSQLSHDK_LIBS_UTILS_UTILS_JSON_H_
29#ifdef RAPIDJSON_NO_SIZETYPEDEFINE
33#include <rapidjson/rapidjson.h>
35#include <rapidjson/document.h>
53 explicit JSON_dumper(
bool pprint =
false,
size_t binary_limit = 0);
77 void append(
bool data)
const;
78 void append(std::string_view
key,
bool data)
const;
82 void append(
int data)
const;
83 void append(std::string_view
key,
int data)
const;
87 void append(
unsigned int data)
const;
88 void append(std::string_view
key,
unsigned int data)
const;
96 void append(
long int data)
const;
97 void append(std::string_view
key,
long int data)
const;
99 void append(
unsigned long int data)
const;
100 void append(std::string_view
key,
unsigned long int data)
const;
102 void append(
long long int data)
const;
103 void append(std::string_view
key,
long long int data)
const;
105 void append(
unsigned long long int data)
const;
106 void append(std::string_view
key,
unsigned long long int data)
const;
110 void append(std::string_view data)
const;
112 void append(std::string_view
key, std::string_view data)
const;
113 inline void append(std::string_view
key,
const char *data)
const {
119 void append(
double data)
const;
120 void append(std::string_view
key,
double data)
const;
126 const std::string &
str()
const;
137using JSON = rapidjson::Document;
175 bool allow_empty =
false);
201std::optional<std::string>
optional(
const JSON &json,
const char *name,
202 bool allow_empty =
false);
Definition: utils_json.cc:106
Definition: utils_json.h:49
void start_array()
Definition: utils_json.cc:189
void append(const Value &value)
Definition: utils_json.cc:305
int deep_level() const
Definition: utils_json.h:124
int _deep_level
Definition: utils_json.h:129
void append_uint(unsigned int data) const
Definition: utils_json.cc:358
void append(std::string_view key, const char *data) const
Definition: utils_json.h:113
void append_value(const Value &value)
Definition: utils_json.cc:206
JSON_dumper(bool pprint=false, size_t binary_limit=0)
Definition: utils_json.cc:179
void append(const char *data) const
Definition: utils_json.h:111
std::unique_ptr< Writer_base > _writer
Definition: utils_json.h:132
void append_json(const std::string &data) const
Definition: utils_json.cc:469
void start_object()
Definition: utils_json.cc:197
void end_object()
Definition: utils_json.cc:201
void append_bool(bool data) const
Definition: utils_json.cc:332
void append_int(int data) const
Definition: utils_json.cc:345
void append_float(double data) const
Definition: utils_json.cc:454
void append_uint64(uint64_t data) const
Definition: utils_json.cc:382
size_t _binary_limit
Definition: utils_json.h:130
void append_int64(int64_t data) const
Definition: utils_json.cc:373
void append_string(std::string_view data) const
Definition: utils_json.cc:438
const std::string & str() const
Definition: utils_json.cc:475
void append_null() const
Definition: utils_json.cc:325
void end_array()
Definition: utils_json.cc:193
Define rapidjson::SizeType to be std::uint64_t.
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
uint64_t required_uint(const JSON &json, const char *name)
Fetches an unsigned integer value of a required field.
Definition: utils_json.cc:528
std::string to_string(const JSON &json)
Converts a JSON object to a string.
Definition: utils_json.cc:567
std::optional< std::string > optional(const JSON &json, const char *name, bool allow_empty)
Fetches a string value of an optional field.
Definition: utils_json.cc:538
std::optional< uint64_t > optional_uint(const JSON &json, const char *name)
Fetches an unsigned integer value of an optional field.
Definition: utils_json.cc:553
JSON parse_object_or_throw(std::string_view json)
Parses a JSON string, input is expected to be a JSON object.
Definition: utils_json.cc:502
std::string to_pretty_string(const JSON &json)
Converts a JSON object to a nicely formatted string.
Definition: utils_json.cc:574
std::string required(const JSON &json, const char *name, bool allow_empty)
Fetches a string value of a required field.
Definition: utils_json.cc:517
JSON parse(std::string_view json)
Parses a JSON string.
Definition: utils_json.cc:494
rapidjson::Document JSON
Definition: utils_json.h:137
Definition: file_system_exceptions.h:34
Value::Array_type_ref Array_t
Definition: jit_executor_value.h:431
Value::Map_type_ref Dictionary_t
Definition: jit_executor_value.h:430
required string key
Definition: replication_asynchronous_connection_failover.proto:60
Pointer to a function that may be implemented in any language.
Definition: jit_executor_value.h:130