• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# <small>nlohmann::basic_json::</small>patch_inplace
2
3```cpp
4void patch_inplace(const basic_json& json_patch) const;
5```
6
7[JSON Patch](http://jsonpatch.com) defines a JSON document structure for expressing a sequence of operations to apply to
8a JSON document. With this function, a JSON Patch is applied to the current JSON value by executing all operations from
9the patch. This function applies a JSON patch in place and returns void.
10
11## Parameters
12
13`json_patch` (in)
14:   JSON patch document
15
16## Exception safety
17
18No guarantees, value may be corrupted by an unsuccessful patch operation.
19
20## Exceptions
21
22- Throws [`parse_error.104`](../../home/exceptions.md#jsonexceptionparse_error104) if the JSON patch does not consist of
23  an array of objects.
24- Throws [`parse_error.105`](../../home/exceptions.md#jsonexceptionparse_error105) if the JSON patch is malformed (e.g.,
25  mandatory attributes are missing); example: `"operation add must have member path"`.
26- Throws [`out_of_range.401`](../../home/exceptions.md#jsonexceptionout_of_range401) if an array index is out of range.
27- Throws [`out_of_range.403`](../../home/exceptions.md#jsonexceptionout_of_range403) if a JSON pointer inside the patch
28  could not be resolved successfully in the current JSON value; example: `"key baz not found"`.
29- Throws [`out_of_range.405`](../../home/exceptions.md#jsonexceptionout_of_range405) if JSON pointer has no parent
30  ("add", "remove", "move")
31- Throws [`out_of_range.501`](../../home/exceptions.md#jsonexceptionother_error501) if "test" operation was
32  unsuccessful.
33
34## Complexity
35
36Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is
37affected by the patch, the complexity can usually be neglected.
38
39## Notes
40
41Unlike [`patch`](patch.md), `patch_inplace` applies the operation "in place" and no copy of the JSON value is created.
42That makes it faster for large documents by avoiding the copy. However, the JSON value might be corrupted if the
43function throws an exception.
44
45## Examples
46
47??? example
48
49    The following code shows how a JSON patch is applied to a value.
50
51    ```cpp
52    --8<-- "examples/patch_inplace.cpp"
53    ```
54
55    Output:
56
57    ```json
58    --8<-- "examples/patch_inplace.output"
59    ```
60
61## See also
62
63- [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902)
64- [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901)
65- [patch](patch.md) applies a JSON Merge Patch
66- [merge_patch](merge_patch.md) applies a JSON Merge Patch
67
68## Version history
69
70- Added in version 3.11.0.
71