13408 {
13409 switch (
value.type())
13410 {
13412 {
13413 if (
value.m_value.array->empty())
13414 {
13415
13416 result[reference_string] = nullptr;
13417 }
13418
13419 else
13420 {
13421
13422 for (std::size_t i = 0; i <
value.m_value.array->size(); ++i)
13423 {
13424 flatten(reference_string +
"/" + std::to_string(i),
13425 value.m_value.array->operator[](i), result);
13426 }
13427 }
13428
13429 break;
13430 }
13431
13433 {
13434 if (
value.m_value.object->empty())
13435 {
13436
13437 result[reference_string] = nullptr;
13438 }
13439
13440 else
13441 {
13442
13443 for (
const auto &element : *
value.m_value.object)
13444 {
13446 }
13447 }
13448
13449 break;
13450 }
13451
13460 default:
13461 {
13462
13463 result[reference_string] =
value;
13464 break;
13465 }
13466 }
13467 }
static void flatten(const std::string &reference_string, const BasicJsonType &value, BasicJsonType &result)
@ number_integer
number value (signed integer)
@ discarded
discarded by the parser callback function
@ binary
binary array (ordered collection of bytes)
@ object
object (unordered set of name/value pairs)
@ number_float
number value (floating-point)
@ number_unsigned
number value (unsigned integer)
@ array
array (ordered collection of values)
@ value
the parser finished reading a JSON value
std::string escape(std::string s)
string escaping as described in RFC 6901 (Sect. 4)