@complexity Linear in the number of reference tokens.
12944 {
12945 auto *result = &j;
12946
12947
12948
12949 for (const auto &reference_token : reference_tokens)
12950 {
12951 switch (result->type())
12952 {
12954 {
12955 if (reference_token == "0")
12956 {
12957
12958 result = &result->operator[](0);
12959 }
12960
12961 else
12962 {
12963
12964 result = &result->operator[](reference_token);
12965 }
12966
12967 break;
12968 }
12969
12971 {
12972
12973 result = &result->operator[](reference_token);
12974 break;
12975 }
12976
12978 {
12979
12980 result = &result->operator[](
array_index(reference_token));
12981 break;
12982 }
12983
12984
12985
12986
12987
12988
12989
12997 default:
12998 JSON_THROW(detail::type_error::create(313, "invalid value to unflatten", j));
12999 }
13000 }
13001
13002 return *result;
13003 }
static BasicJsonType::size_type array_index(const std::string &s)
@ 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)