25 lines
1.3 KiB
Markdown
25 lines
1.3 KiB
Markdown
|
---
|
|||
|
obj: concept
|
|||
|
rfc: https://datatracker.ietf.org/doc/html/rfc6901
|
|||
|
---
|
|||
|
|
|||
|
# JSON Pointer
|
|||
|
JSON Pointer defines a string format for identifying a specific value within a [JSON](JSON.md) document.
|
|||
|
|
|||
|
A JSON Pointer is a string of tokens separated by `/` characters, these tokens either specify keys in objects or indexes into arrays. For example, given the [JSON](JSON.md)
|
|||
|
```json
|
|||
|
{
|
|||
|
"biscuits": [
|
|||
|
{ "name": "Digestive" }`
|
|||
|
{ "name": "Choco Leibniz" }
|
|||
|
]
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
`/biscuits` would point to the array of biscuits and `/biscuits/1/name` would point to `"Choco Leibniz"`.
|
|||
|
|
|||
|
To point to the root of the document use an empty string for the pointer. The pointer `/` doesn’t point to the root, it points to a key of `""` on the root (which is totally valid in [JSON](../files/JSON.md)).
|
|||
|
|
|||
|
If you need to refer to a key with `~` or `/` in its name, you must escape the characters with `~0` and `~1` respectively. For example, to get `"baz"` from `{ "foo/bar~": "baz" }` you’d use the pointer `/foo~1bar~0`.
|
|||
|
|
|||
|
Finally, if you need to refer to the end of an array you can use `-` instead of an index. For example, to refer to the end of the array of biscuits above you would use `/biscuits/-`. This is useful when you need to insert a value at the end of an array.
|