Skip to content

basic_json::get_ptr

template<typename PointerType>
PointerType get_ptr();

template<typename PointerType>
constexpr const PointerType get_ptr() const noexcept;

Implicit pointer access to the internally stored JSON value. No copies are made.

Template arguments

PointerType
pointer type; must be a pointer to array_t, object_t, string_t, boolean_t, number_integer_t, or number_unsigned_t, number_float_t, or binary_t. Other types will not compile.

Return value

pointer to the internally stored JSON value if the requested pointer type fits to the JSON value; nullptr otherwise

Exception safety

Strong exception safety: if an exception occurs, the original value stays intact.

Complexity

Constant.

Notes

Warning

Writing data to the pointee of the result yields an undefined state.

Example

Example

The example below shows how pointers to internal values of a JSON value can be requested. Note that no type conversions are made and a nullptr is returned if the value and the requested pointer type does not match.

#include <iostream>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main()
{
    // create a JSON number
    json value = 17;

    // explicitly getting pointers
    auto p1 = value.get_ptr<const json::number_integer_t*>();
    auto p2 = value.get_ptr<json::number_integer_t*>();
    auto p3 = value.get_ptr<json::number_integer_t* const>();
    auto p4 = value.get_ptr<const json::number_integer_t* const>();
    auto p5 = value.get_ptr<json::number_float_t*>();

    // print the pointees
    std::cout << *p1 << ' ' << *p2 << ' ' << *p3 << ' ' << *p4 << '\n';
    std::cout << std::boolalpha << (p5 == nullptr) << '\n';
}

Output:

17 17 17 17
true

Version history

  • Added in version 1.0.0.
  • Extended to binary types in version 3.8.0.