MUQ  0.4.3
nlohmann::json_pointer< BasicJsonType > Class Template Reference

JSON Pointer. More...

#include <json.h>

Detailed Description

template<typename BasicJsonType>
class nlohmann::json_pointer< BasicJsonType >

JSON Pointer.

A JSON pointer defines a string syntax for identifying a specific value within a JSON document. It can be used with functions at and operator[]. Furthermore, JSON pointers are the base for JSON patches.

See also
RFC 6901
Since
version 2.0.0

Definition at line 11554 of file json.h.

Public Member Functions

 json_pointer (const std::string &s="")
 create JSON pointer More...
 
std::string to_string () const
 return a string representation of the JSON pointer More...
 
 operator std::string () const
 return a string representation of the JSON pointer More...
 
json_pointeroperator/= (const json_pointer &ptr)
 append another JSON pointer at the end of this JSON pointer More...
 
json_pointeroperator/= (std::string token)
 append an unescaped reference token at the end of this JSON pointer More...
 
json_pointeroperator/= (std::size_t array_idx)
 append an array index at the end of this JSON pointer More...
 
json_pointer parent_pointer () const
 returns the parent of this JSON pointer More...
 
void pop_back ()
 remove last reference token More...
 
const std::string & back () const
 return last reference token More...
 
void push_back (const std::string &token)
 append an unescaped token at the end of the reference pointer More...
 
void push_back (std::string &&token)
 append an unescaped token at the end of the reference pointer More...
 
bool empty () const noexcept
 return whether pointer points to the root document More...
 

Friends

class basic_json
 
json_pointer operator/ (const json_pointer &lhs, const json_pointer &rhs)
 create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer More...
 
json_pointer operator/ (const json_pointer &ptr, std::string token)
 create a new JSON pointer by appending the unescaped token at the end of the JSON pointer More...
 
json_pointer operator/ (const json_pointer &ptr, std::size_t array_idx)
 create a new JSON pointer by appending the array-index-token at the end of the JSON pointer More...
 
bool operator== (json_pointer const &lhs, json_pointer const &rhs) noexcept
 compares two JSON pointers for equality More...
 
bool operator!= (json_pointer const &lhs, json_pointer const &rhs) noexcept
 compares two JSON pointers for inequality More...
 

Constructor & Destructor Documentation

◆ json_pointer()

template<typename BasicJsonType >
nlohmann::json_pointer< BasicJsonType >::json_pointer ( const std::string &  s = "")
inlineexplicit

create JSON pointer

Create a JSON pointer according to the syntax described in Section 3 of RFC6901.

Parameters
[in]sstring representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value
Exceptions
parse_error.107if the given JSON pointer s is nonempty and does not begin with a slash (/); see example below
parse_error.108if a tilde (~) in the given JSON pointer s is not followed by 0 (representing ~) or 1 (representing /); see example below

@liveexample{The example shows the construction several valid JSON pointers as well as the exceptional behavior.,json_pointer}

Since
version 2.0.0

Definition at line 11582 of file json.h.

Referenced by nlohmann::json_pointer< BasicJsonType >::unflatten().

Member Function Documentation

◆ array_index()

template<typename BasicJsonType >
static BasicJsonType::size_type nlohmann::json_pointer< BasicJsonType >::array_index ( const std::string &  s)
inlinestaticprivate
Parameters
[in]sreference token to be converted into an array index
Returns
integer representation of s
Exceptions
parse_error.106if an array index begins with '0'
parse_error.109if an array index begins not with a digit
out_of_range.404if string s could not be converted to an integer
out_of_range.410if an array index exceeds size_type

Definition at line 11869 of file json.h.

References nlohmann::detail::parse_error::create(), and nlohmann::detail::out_of_range::create().

Referenced by nlohmann::json_pointer< BasicJsonType >::contains(), nlohmann::json_pointer< BasicJsonType >::get_and_create(), nlohmann::json_pointer< BasicJsonType >::get_checked(), and nlohmann::json_pointer< BasicJsonType >::get_unchecked().

◆ back()

template<typename BasicJsonType >
const std::string& nlohmann::json_pointer< BasicJsonType >::back ( ) const
inline

return last reference token

Precondition
not empty()
Returns
last reference token

@liveexample{The example shows the usage of back.,json_pointer__back}

@complexity Constant.

Exceptions
out_of_range.405if JSON pointer has no parent
Since
version 3.6.0

Definition at line 11806 of file json.h.

References nlohmann::detail::out_of_range::create(), nlohmann::json_pointer< BasicJsonType >::empty(), and nlohmann::json_pointer< BasicJsonType >::reference_tokens.

◆ contains()

template<typename BasicJsonType >
bool nlohmann::json_pointer< BasicJsonType >::contains ( const BasicJsonType *  ptr) const
inlineprivate

◆ empty()

template<typename BasicJsonType >
bool nlohmann::json_pointer< BasicJsonType >::empty ( ) const
inlinenoexcept

return whether pointer points to the root document

Returns
true iff the JSON pointer points to the root document

@complexity Constant.

@exceptionsafety No-throw guarantee: this function never throws exceptions.

@liveexample{The example shows the result of empty for different JSON Pointers.,json_pointer__empty}

Since
version 3.6.0

Definition at line 11853 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::reference_tokens.

Referenced by nlohmann::json_pointer< BasicJsonType >::back(), nlohmann::json_pointer< BasicJsonType >::parent_pointer(), nlohmann::json_pointer< BasicJsonType >::pop_back(), and nlohmann::json_pointer< BasicJsonType >::top().

◆ escape()

template<typename BasicJsonType >
static std::string nlohmann::json_pointer< BasicJsonType >::escape ( std::string  s)
inlinestaticprivate

escape "~" to "~0" and "/" to "~1"

Definition at line 12363 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::replace_substring().

Referenced by nlohmann::json_pointer< BasicJsonType >::flatten().

◆ flatten()

template<typename BasicJsonType >
static void nlohmann::json_pointer< BasicJsonType >::flatten ( const std::string &  reference_string,
const BasicJsonType &  value,
BasicJsonType &  result 
)
inlinestaticprivate
Parameters
[in]reference_stringthe reference string to the current value
[in]valuethe value to consider
[in,out]resultthe result object to insert values to
Note
Empty objects or arrays are flattened to null.

Definition at line 12384 of file json.h.

References nlohmann::detail::array, nlohmann::json_pointer< BasicJsonType >::escape(), nlohmann::detail::object, nlohmann::to_string(), and nlohmann::detail::value.

◆ get_and_create()

template<typename BasicJsonType >
BasicJsonType& nlohmann::json_pointer< BasicJsonType >::get_and_create ( BasicJsonType &  j) const
inlineprivate

create and return a reference to the pointed to value

@complexity Linear in the number of reference tokens.

Exceptions
parse_error.109if array index is not a number
type_error.313if value cannot be unflattened

Definition at line 11934 of file json.h.

References nlohmann::detail::array, nlohmann::json_pointer< BasicJsonType >::array_index(), nlohmann::detail::type_error::create(), nlohmann::detail::null, nlohmann::detail::object, and nlohmann::json_pointer< BasicJsonType >::reference_tokens.

◆ get_checked() [1/2]

template<typename BasicJsonType >
BasicJsonType& nlohmann::json_pointer< BasicJsonType >::get_checked ( BasicJsonType *  ptr) const
inlineprivate
Exceptions
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.402if the array index '-' is used
out_of_range.404if the JSON pointer can not be resolved

Definition at line 12065 of file json.h.

References nlohmann::detail::array, nlohmann::json_pointer< BasicJsonType >::array_index(), nlohmann::detail::out_of_range::create(), nlohmann::detail::object, nlohmann::json_pointer< BasicJsonType >::reference_tokens, and nlohmann::to_string().

Referenced by nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::value().

◆ get_checked() [2/2]

template<typename BasicJsonType >
const BasicJsonType& nlohmann::json_pointer< BasicJsonType >::get_checked ( const BasicJsonType *  ptr) const
inlineprivate
Exceptions
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.402if the array index '-' is used
out_of_range.404if the JSON pointer can not be resolved

Definition at line 12156 of file json.h.

References nlohmann::detail::array, nlohmann::json_pointer< BasicJsonType >::array_index(), nlohmann::detail::out_of_range::create(), nlohmann::detail::object, nlohmann::json_pointer< BasicJsonType >::reference_tokens, and nlohmann::to_string().

◆ get_unchecked() [1/2]

template<typename BasicJsonType >
BasicJsonType& nlohmann::json_pointer< BasicJsonType >::get_unchecked ( BasicJsonType *  ptr) const
inlineprivate

return a reference to the pointed to value

Note
This version does not throw if a value is not present, but tries to create nested values instead. For instance, calling this function with pointer "/this/that" on a null value is equivalent to calling operator[]("this").operator[]("that") on that value, effectively changing the null value to an object.
Parameters
[in]ptra JSON value
Returns
reference to the JSON value pointed to by the JSON pointer

@complexity Linear in the length of the JSON pointer.

Exceptions
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.404if the JSON pointer can not be resolved

Definition at line 12006 of file json.h.

References nlohmann::detail::array, nlohmann::json_pointer< BasicJsonType >::array_index(), nlohmann::detail::out_of_range::create(), nlohmann::detail::object, and nlohmann::json_pointer< BasicJsonType >::reference_tokens.

◆ get_unchecked() [2/2]

template<typename BasicJsonType >
const BasicJsonType& nlohmann::json_pointer< BasicJsonType >::get_unchecked ( const BasicJsonType *  ptr) const
inlineprivate

return a const reference to the pointed to value

Parameters
[in]ptra JSON value
Returns
const reference to the JSON value pointed to by the JSON pointer
Exceptions
parse_error.106if an array index begins with '0'
parse_error.109if an array index was not a number
out_of_range.402if the array index '-' is used
out_of_range.404if the JSON pointer can not be resolved

Definition at line 12114 of file json.h.

References nlohmann::detail::array, nlohmann::json_pointer< BasicJsonType >::array_index(), nlohmann::detail::out_of_range::create(), nlohmann::detail::object, nlohmann::json_pointer< BasicJsonType >::reference_tokens, and nlohmann::to_string().

◆ operator std::string()

template<typename BasicJsonType >
nlohmann::json_pointer< BasicJsonType >::operator std::string ( ) const
inline

return a string representation of the JSON pointer

Invariant
For each JSON pointer ptr, it holds:
ptr == json_pointer(ptr.to_string());
json_pointer(const std::string &s="")
create JSON pointer
Definition: json.h:11582
Returns
a string representation of the JSON pointer

@liveexample{The example shows the result of to_string.,json_pointer__to_string}

Since
version 2.0.0

Definition at line 11611 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::to_string().

◆ operator/=() [1/3]

template<typename BasicJsonType >
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= ( const json_pointer< BasicJsonType > &  ptr)
inline

append another JSON pointer at the end of this JSON pointer

Parameters
[in]ptrJSON pointer to append
Returns
JSON pointer with ptr appended

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

@complexity Linear in the length of ptr.

See also
operator/=(std::string) to append a reference token
operator/=(std::size_t) to append an array index
operator/(const json_pointer&, const json_pointer&) for a binary operator
Since
version 3.6.0

Definition at line 11632 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::reference_tokens.

◆ operator/=() [2/3]

template<typename BasicJsonType >
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= ( std::size_t  array_idx)
inline

append an array index at the end of this JSON pointer

Parameters
[in]array_idxarray index to append
Returns
JSON pointer with array_idx appended

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

@complexity Amortized constant.

See also
operator/=(const json_pointer&) to append a JSON pointer
operator/=(std::string) to append a reference token
operator/(const json_pointer&, std::string) for a binary operator
Since
version 3.6.0

Definition at line 11678 of file json.h.

References nlohmann::to_string().

◆ operator/=() [3/3]

template<typename BasicJsonType >
json_pointer& nlohmann::json_pointer< BasicJsonType >::operator/= ( std::string  token)
inline

append an unescaped reference token at the end of this JSON pointer

Parameters
[in]tokenreference token to append
Returns
JSON pointer with token appended without escaping token

@liveexample{The example shows the usage of operator/=.,json_pointer__operator_add}

@complexity Amortized constant.

See also
operator/=(const json_pointer&) to append a JSON pointer
operator/=(std::size_t) to append an array index
operator/(const json_pointer&, std::size_t) for a binary operator
Since
version 3.6.0

Definition at line 11656 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::push_back().

◆ parent_pointer()

template<typename BasicJsonType >
json_pointer nlohmann::json_pointer< BasicJsonType >::parent_pointer ( ) const
inline

returns the parent of this JSON pointer

Returns
parent of this JSON pointer; in case this JSON pointer is the root, the root itself is returned

@complexity Linear in the length of the JSON pointer.

@liveexample{The example shows the result of parent_pointer for different JSON Pointers.,json_pointer__parent_pointer}

Since
version 3.6.0

Definition at line 11757 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::empty(), and nlohmann::json_pointer< BasicJsonType >::pop_back().

◆ pop_back()

template<typename BasicJsonType >
void nlohmann::json_pointer< BasicJsonType >::pop_back ( )
inline

remove last reference token

Precondition
not empty()

@liveexample{The example shows the usage of pop_back.,json_pointer__pop_back}

@complexity Constant.

Exceptions
out_of_range.405if JSON pointer has no parent
Since
version 3.6.0

Definition at line 11782 of file json.h.

References nlohmann::detail::out_of_range::create(), nlohmann::json_pointer< BasicJsonType >::empty(), and nlohmann::json_pointer< BasicJsonType >::reference_tokens.

Referenced by nlohmann::json_pointer< BasicJsonType >::parent_pointer().

◆ push_back() [1/2]

template<typename BasicJsonType >
void nlohmann::json_pointer< BasicJsonType >::push_back ( const std::string &  token)
inline

append an unescaped token at the end of the reference pointer

Parameters
[in]tokentoken to add

@complexity Amortized constant.

@liveexample{The example shows the result of push_back for different JSON Pointers.,json_pointer__push_back}

Since
version 3.6.0

Definition at line 11828 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::reference_tokens.

Referenced by nlohmann::json_pointer< BasicJsonType >::operator/=().

◆ push_back() [2/2]

template<typename BasicJsonType >
void nlohmann::json_pointer< BasicJsonType >::push_back ( std::string &&  token)
inline

append an unescaped token at the end of the reference pointer

Parameters
[in]tokentoken to add

@complexity Amortized constant.

@liveexample{The example shows the result of push_back for different JSON Pointers.,json_pointer__push_back}

Since
version 3.6.0

Definition at line 11834 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::reference_tokens.

◆ replace_substring()

template<typename BasicJsonType >
static void nlohmann::json_pointer< BasicJsonType >::replace_substring ( std::string &  s,
const std::string &  f,
const std::string &  t 
)
inlinestaticprivate

replace all occurrences of a substring by another string

Parameters
[in,out]sthe string to manipulate; changed so that all occurrences of f are replaced with t
[in]fthe substring to replace with t
[in]tthe string to replace f
Precondition
The search string f must not be empty. This precondition is enforced with an assertion.
Since
version 2.0.0

Definition at line 12351 of file json.h.

References nlohmann::detail::JSON_ASSERT().

Referenced by nlohmann::json_pointer< BasicJsonType >::escape(), and nlohmann::json_pointer< BasicJsonType >::unescape().

◆ split()

template<typename BasicJsonType >
static std::vector<std::string> nlohmann::json_pointer< BasicJsonType >::split ( const std::string &  reference_string)
inlinestaticprivate

split the string input to reference tokens

Note
This function is only called by the json_pointer constructor. All exceptions below are documented there.
Exceptions
parse_error.107if the pointer is not empty or begins with '/'
parse_error.108if character '~' is not followed by '0' or '1'

Definition at line 12276 of file json.h.

References nlohmann::detail::parse_error::create(), nlohmann::detail::JSON_ASSERT(), and nlohmann::json_pointer< BasicJsonType >::unescape().

◆ to_string()

template<typename BasicJsonType >
std::string nlohmann::json_pointer< BasicJsonType >::to_string ( ) const
inline

return a string representation of the JSON pointer

Invariant
For each JSON pointer ptr, it holds:
ptr == json_pointer(ptr.to_string());
Returns
a string representation of the JSON pointer

@liveexample{The example shows the result of to_string.,json_pointer__to_string}

Since
version 2.0.0

Definition at line 11600 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::reference_tokens.

Referenced by nlohmann::json_pointer< BasicJsonType >::operator std::string().

◆ top()

template<typename BasicJsonType >
json_pointer nlohmann::json_pointer< BasicJsonType >::top ( ) const
inlineprivate

◆ unescape()

template<typename BasicJsonType >
static void nlohmann::json_pointer< BasicJsonType >::unescape ( std::string &  s)
inlinestaticprivate

unescape "~1" to tilde and "~0" to slash (order is important!)

Definition at line 12371 of file json.h.

References nlohmann::json_pointer< BasicJsonType >::replace_substring().

Referenced by nlohmann::json_pointer< BasicJsonType >::split().

◆ unflatten()

template<typename BasicJsonType >
static BasicJsonType nlohmann::json_pointer< BasicJsonType >::unflatten ( const BasicJsonType &  value)
inlinestaticprivate
Parameters
[in]valueflattened JSON
Returns
unflattened JSON
Exceptions
parse_error.109if array index is not a number
type_error.314if value is not an object
type_error.315if object values are not primitive
type_error.313if value cannot be unflattened

Definition at line 12447 of file json.h.

References nlohmann::detail::type_error::create(), nlohmann::json_pointer< BasicJsonType >::json_pointer(), and nlohmann::detail::value.

Friends And Related Function Documentation

◆ basic_json

template<typename BasicJsonType >
friend class basic_json
friend

Definition at line 11558 of file json.h.

◆ operator!=

template<typename BasicJsonType >
bool operator!= ( json_pointer< BasicJsonType > const &  lhs,
json_pointer< BasicJsonType > const &  rhs 
)
friend

compares two JSON pointers for inequality

Parameters
[in]lhsJSON pointer to compare
[in]rhsJSON pointer to compare
Returns
whether lhs is not equal rhs

@complexity Linear in the length of the JSON pointer

@exceptionsafety No-throw guarantee: this function never throws exceptions.

Definition at line 12502 of file json.h.

◆ operator/ [1/3]

template<typename BasicJsonType >
json_pointer operator/ ( const json_pointer< BasicJsonType > &  lhs,
const json_pointer< BasicJsonType > &  rhs 
)
friend

create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer

Parameters
[in]lhsJSON pointer
[in]rhsJSON pointer
Returns
a new JSON pointer with rhs appended to lhs

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

@complexity Linear in the length of lhs and rhs.

See also
operator/=(const json_pointer&) to append a JSON pointer
Since
version 3.6.0

Definition at line 11698 of file json.h.

◆ operator/ [2/3]

template<typename BasicJsonType >
json_pointer operator/ ( const json_pointer< BasicJsonType > &  ptr,
std::size_t  array_idx 
)
friend

create a new JSON pointer by appending the array-index-token at the end of the JSON pointer

Parameters
[in]ptrJSON pointer
[in]array_idxarray index
Returns
a new JSON pointer with array_idx appended to ptr

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

@complexity Linear in the length of ptr.

See also
operator/=(std::size_t) to append an array index
Since
version 3.6.0

Definition at line 11739 of file json.h.

◆ operator/ [3/3]

template<typename BasicJsonType >
json_pointer operator/ ( const json_pointer< BasicJsonType > &  ptr,
std::string  token 
)
friend

create a new JSON pointer by appending the unescaped token at the end of the JSON pointer

Parameters
[in]ptrJSON pointer
[in]tokenreference token
Returns
a new JSON pointer with unescaped token appended to ptr

@liveexample{The example shows the usage of operator/.,json_pointer__operator_add_binary}

@complexity Linear in the length of ptr.

See also
operator/=(std::string) to append a reference token
Since
version 3.6.0

Definition at line 11719 of file json.h.

◆ operator==

template<typename BasicJsonType >
bool operator== ( json_pointer< BasicJsonType > const &  lhs,
json_pointer< BasicJsonType > const &  rhs 
)
friend

compares two JSON pointers for equality

Parameters
[in]lhsJSON pointer to compare
[in]rhsJSON pointer to compare
Returns
whether lhs is equal to rhs

@complexity Linear in the length of the JSON pointer

@exceptionsafety No-throw guarantee: this function never throws exceptions.

Definition at line 12485 of file json.h.

Member Data Documentation

◆ reference_tokens


The documentation for this class was generated from the following file: