1# basic_json::patch 2 3```cpp 4basic_json patch(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. 10 11## Parameters 12 13`json_patch` (in) 14: JSON patch document 15 16## Return value 17 18patched document 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## Exception safety 35 36Strong guarantee: if an exception is thrown, there are no changes in the JSON value. 37 38## Complexity 39 40Linear in the size of the JSON value and the length of the JSON patch. As usually only a fraction of the JSON value is 41affected by the patch, the complexity can usually be neglected. 42 43## Note 44 45The application of a patch is atomic: Either all operations succeed and the patched document is returned or an exception 46is thrown. In any case, the original value is not changed: the patch is applied to a copy of the value. 47 48## Example 49 50??? example 51 52 The following code shows how a JSON patch is applied to a value. 53 54 ```cpp 55 --8<-- "examples/patch.cpp" 56 ``` 57 58 Output: 59 60 ```json 61 --8<-- "examples/patch.output" 62 ``` 63 64## Version history 65 66- Added in version 2.0.0. 67