# nlohmann::basic_json::start_pos ```cpp #if JSON_DIAGNOSTIC_POSITIONS constexpr std::size_t start_pos() const noexcept; #endif ``` Returns the position of the first character in the JSON string from which the value was parsed from. | JSON type | return value | |-----------|------------------------------------------------| | object | position of the opening `{` | | array | position of the opening `[` | | string | position of the opening `"` | | number | position of the first character | | boolean | position of `t` for `true` and `f` for `false` | | null | position of `n` | ## Return value the position of the first character of the value in the parsed JSON string, if the value was created by the [`parse`](parse.md) function, or `std::string::npos` if the value was constructed otherwise ## Exception safety No-throw guarantee: this member function never throws exceptions. ## Complexity Constant. ## Notes !!! note "Note" The function is only available if macro [`JSON_DIAGNOSTIC_POSITIONS`](../macros/json_diagnostic_positions.md) has been defined to `#!cpp 1` before including the library header. !!! warning "Invalidation" The returned positions are only valid as long as the JSON value is not changed. The positions are *not* updated when the JSON value is changed. ## Examples ??? example "Example" ```cpp --8<-- "examples/diagnostic_positions.cpp" ``` Output: ``` --8<-- "examples/diagnostic_positions.output" ``` The output shows the start/end positions of all the objects and fields in the JSON string. ## See also - [end_pos](end_pos.md) to access the end position - [JSON_DIAGNOSTIC_POSITIONS](../macros/json_diagnostic_positions.md) for an overview of the diagnostic positions ## Version history - Added in version 3.12.0.