Skip to content


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

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.





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



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';


17 17 17 17

Version history

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