Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9
The JsonCons.Net libraries complement the System.Text.Json namespace with support for JSON Pointer, JSON Patch, JSON Merge Patch, JSONPath, and JMESPath.
License
danielaparker/JsonCons.Net
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
| JsonCons.Utilities | JsonCons.JsonPath | JsonCons.JmesPath |
|---|---|---|
The JsonCons.Net libraries include classes that complement the functionality of theSystem.Text.Json namespace.The libraries target .Net Standard 2.1.
The JsonCons.Net libraries offer support for:
- JSON Pointer as defined inRFC 6901
- JSON Patch as defined inRFC 6902
- JSON Merge Patch as defined inRFC 7396
- JSONPath as defined inJsonCons JsonPath
- JMESPath as defined inJMESPath Specification
JSONPath allows you to select from aJsonDocumenta list ofJsonElement instancesthat belong to it. JMESPath allows you to transform aJsonDocumentinto anotherJsonDocument.
For example, consider the JSON data
string jsonString = @"{""Data"":[ {""KeyOfInterest"":true,""AnotherKey"":true }, {""KeyOfInterest"":false,""AnotherKey"":true }, {""KeyOfInterest"":true,""AnotherKey"":true }]}";using JsonDocument doc = JsonDocument.Parse(jsonString);
JSONPath allows you to select theKeyOfInterest values like this:
stringpath="$.Data[*].KeyOfInterest";IList<JsonElement>results=JsonSelector.Select(doc.RootElement,path);
and the union ofKeyOfInterest andAnotherKey values like this:
stringpath="$.Data[*]['KeyOfInterest', 'AnotherKey']";IList<JsonElement>results=JsonSelector.Select(doc.RootElement,path);
The first query produces
[true,false,true]
and the second
[true,true,false,true,true,true]
Note that each element in the result -true,false,true - corresponds to an elementat a specific location in the original JSON document. This is a feature of JSONPath.
JMESPath allows you to select theKeyOfInterest values like this:
stringexpr=Data[*].KeyOfInterest;JsonDocumentresult=JsonTransformer.Transform(doc.RootElement,expr);
and a multiselect hash ofKeyOfInterest andAnotherKey values like this:
stringexpr="Data[*].{\"Key of Interest\" : KeyOfInterest,\"Another Key\": AnotherKey}";JsonDocumentresult=JsonTransformer.Transform(doc.RootElement,expr);
The first query produces
[true,false,true]
and the second
[ {"Key of Interest":true,"Another Key":true }, {"Key of Interest":false,"Another Key":true }, {"Key of Interest":true,"Another Key":true }]JMESPath, unlike JSONPath, can create new elements that are not in the original document.JMESPath can transform, while JsonPath can only select.
Reference documentation is availablehere
Code examples may be found at:
About
The JsonCons.Net libraries complement the System.Text.Json namespace with support for JSON Pointer, JSON Patch, JSON Merge Patch, JSONPath, and JMESPath.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.