31 lines
1.9 KiB
Markdown
31 lines
1.9 KiB
Markdown
# Element Access
|
|
|
|
There are many ways elements in a JSON value can be accessed:
|
|
|
|
- unchecked access via [`operator[]`](https://json.nlohmann.me/features/element_access/unchecked_access/index.md)
|
|
- checked access via [`at`](https://json.nlohmann.me/features/element_access/checked_access/index.md)
|
|
- access with default value via [`value`](https://json.nlohmann.me/features/element_access/default_value/index.md)
|
|
- [iterators](https://json.nlohmann.me/features/iterators/index.md)
|
|
- [JSON pointers](https://json.nlohmann.me/features/json_pointer/index.md)
|
|
|
|
Testing whether a key or index exists before accessing it is also possible, with [`contains`](https://json.nlohmann.me/api/basic_json/contains/index.md) or [`find`](https://json.nlohmann.me/api/basic_json/find/index.md) (which returns an iterator to the value, or `end()` if it is not found).
|
|
|
|
```
|
|
flowchart TD
|
|
A["accessing a value"] --> B{"must it exist?"}
|
|
B -->|"yes, missing is an error"| C["at() -- throws"]
|
|
B -->|"yes, but checking is my job"| D["operator[] -- unchecked"]
|
|
B -->|"no, a fallback is fine"| E["value() -- default value"]
|
|
A --> F{"just testing first?"}
|
|
F -->|"yes"| G["contains() / find()"]
|
|
```
|
|
|
|
## See also
|
|
|
|
- [**operator[]**](https://json.nlohmann.me/api/basic_json/operator%5B%5D/index.md) - unchecked access
|
|
- [**at**](https://json.nlohmann.me/api/basic_json/at/index.md) - checked access
|
|
- [**value**](https://json.nlohmann.me/api/basic_json/value/index.md) - access with default value
|
|
- [**contains**](https://json.nlohmann.me/api/basic_json/contains/index.md) and [**find**](https://json.nlohmann.me/api/basic_json/find/index.md) - test for existence
|
|
- [**front**](https://json.nlohmann.me/api/basic_json/front/index.md) and [**back**](https://json.nlohmann.me/api/basic_json/back/index.md) - first and last element
|
|
- [**items**](https://json.nlohmann.me/api/basic_json/items/index.md) - iterate over keys and values
|