JSON Patch

JSON Patch Test Operation

Verify values before applying changes
RFC 6902
test operation

What is the Test Operation?

The test operation checks if the value at the specified path matches the expected value. If the test fails, the entire patch sequence is aborted. This enables conditional patching and optimistic concurrency control.

Syntax

{ "op": "test", "path": "/path/to/check", "value": <expected value> }

Examples

Test Before Update

Verify a value before replacing it

Patch:
[ { "op": "test", "path": "/version", "value": 1 }, { "op": "replace", "path": "/version", "value": 2 } ]
Before:
{ "version": 1, "data": "..." }
After:
{ "version": 2, "data": "..." }

Test Object Match

Verify an entire object matches

Patch:
{ "op": "test", "path": "/user", "value": { "id": 1 } }
Before:
{ "user": { "id": 1 } }
After:
Patch succeeds if match, fails otherwise

Conditional Delete

Only remove if value matches

Patch:
[ { "op": "test", "path": "/status", "value": "pending" }, { "op": "remove", "path": "/status" } ]
Before:
{ "status": "pending" }
After:
{ }

Common Use Cases

  • Optimistic concurrency control
  • Conditional updates based on current state
  • Preventing race conditions
  • Validating assumptions before changes

Best Practices

  • Place test operations before related modifications
  • Use for version checking and conflict detection
  • Deep equality comparison for objects and arrays
  • Essential for safe concurrent updates

Try the Test Operation Now

Use our free online JSON Patch generator to create test patches instantly

🚀 Open JSON Patch Generator

Other JSON Patch Operations

Explore More