Tavis.JsonPatch
No description available
Install / Use
/learn @tavis-software/Tavis.JsonPatchREADME
Tavis.JsonPatch
This library is an implementation of a Json Patch RFC 6902.
The default example from the specification looks like this,
[
{ "op": "test", "path": "/a/b/c", "value": "foo" },
{ "op": "remove", "path": "/a/b/c" },
{ "op": "add", "path": "/a/b/c", "value": ["foo", "bar"] },
{ "op": "replace", "path": "/a/b/c", "value": 42 },
{ "op": "move", "from": "/a/b/c", "path": "/a/b/d" },
{ "op": "copy", "from": "/a/b/d", "path": "/a/b/e" }
]
This library allows you to create this document by doing,
var patchDoc = new PatchDocument( new Operation[]
{
new TestOperation() {Path = new JsonPointer("/a/b/c"), Value = new JValue("foo")},
new RemoveOperation() {Path = new JsonPointer("/a/b/c") },
new AddOperation() {Path = new JsonPointer("/a/b/c"), Value = new JArray(new JValue("foo"), new JValue("bar"))},
new ReplaceOperation() {Path = new JsonPointer("/a/b/c"), Value = new JValue(42)},
new MoveOperation() {FromPath = new JsonPointer("/a/b/c"), Path = new JsonPointer("/a/b/d") },
new CopyOperation() {FromPath = new JsonPointer("/a/b/d"), Path = new JsonPointer("/a/b/e") },
});
This document can be serialized to the wire format like this,
var outputstream = patchDoc.ToStream();
You can also read patch documents from the wire representation and apply them to a JSON document.
var targetDoc = JToken.Parse("{ 'foo': 'bar'}");
var patchDoc = PatchDocument.Parse(@"[
{ 'op': 'add', 'path': '/baz', 'value': 'qux' }
]");
patchDoc.ApplyTo(targetDoc);
Assert.True(JToken.DeepEquals(JToken.Parse(@"{
'foo': 'bar',
'baz': 'qux'
}"), targetDoc));
You can also apply the Json patch format to other targets by implementing the IPatchTarget interface.
The unit tests provide examples of other usages.
This library is a PCL based library and so will work on Windows 8, Windows Phone 7.5, .Net 4.
A nuget package is available here.
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
