JsonCons.JsonPath
1.0.0-preview.2
See the version list below for details.
dotnet add package JsonCons.JsonPath --version 1.0.0-preview.2
NuGet\Install-Package JsonCons.JsonPath -Version 1.0.0-preview.2
<PackageReference Include="JsonCons.JsonPath" Version="1.0.0-preview.2" />
paket add JsonCons.JsonPath --version 1.0.0-preview.2
#r "nuget: JsonCons.JsonPath, 1.0.0-preview.2"
// Install JsonCons.JsonPath as a Cake Addin #addin nuget:?package=JsonCons.JsonPath&version=1.0.0-preview.2&prerelease // Install JsonCons.JsonPath as a Cake Tool #tool nuget:?package=JsonCons.JsonPath&version=1.0.0-preview.2&prerelease
JsonCons.JsonPath
The JsonCons.JsonPath library complements the functionality of the System.Text.Json namespace with an implementation of Stefan Goessner's JsonPath. This implementation has the following features:
It is based on a hand-constructed finite state machine that follows a formal grammar described in an ABNF grammar with specification.
The basic features are largely compatible with the loose consensus seen in Christoph Burgmer's comparison of 41 JSONPath implementations.
Names in the dot notation may be unquoted (no spaces), single-quoted, or double-quoted.
Names in the square bracket notation may be single-quoted or double-quoted.
Unions of separate JSONPath expressions are allowed, e.g.
$..[@.firstName,@.address.city]
Fiter expressions, e.g.
$..book[?(@.price<10)]
, may omit the enclosing parentheses, like so$..book[?@.price<10]
.It supports a parent operator
^
for providing access to the parent node, borrowed from JSONPath Plus.
For example, given a system.text.json.JsonDocument obtained as
string jsonString = @"
{
""books"":
[
{
""title"" : ""A Wild Sheep Chase"",
""author"" : ""Haruki Murakami"",
""price"" : 22.72
},
{
""title"" : ""The Night Watch"",
""author"" : ""Sergei Lukyanenko"",
""price"" : 23.58
},
{
""title"" : ""The Comedians"",
""author"" : ""Graham Greene"",
""price"" : 21.99
},
{
""title"" : ""The Night Watch"",
""author"" : ""David Atlee Phillips"",
""price"" : 260.90
}
]
}";
using JsonDocument doc = JsonDocument.Parse(jsonString);
the JsonCons.JsonPath.JsonSelector class provides functionality to retrieve elements in the JSON document selected according to some criteria,
var selector = JsonSelector.Parse("$.books[?(@.price >= 22 && @.price < 30)]");
IList<JsonElement> elements = selector.Select(doc.RootElement);
The JsonCons.JsonPath library targets .Net Standard 2.1. Reference documentation is available here
Code examples may be found at:
Acknowledgements
Credit to Stefan Goessner's JsonPath, the original JSONPath.
The specification of JsonCons JsonPath draws heavily on Christoph Burgmer's JSONPath Comparison. Many of the test cases and some of the examples are borrowed from this resource.
The specification of JSONPath filter expressions is greatly influenced by James Saryerwinnie's JMESPath
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- JsonCons.Utilities (>= 1.0.0-preview.1)
- System.Text.Json (>= 5.0.2)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on JsonCons.JsonPath:
Package | Downloads |
---|---|
Microsoft.CST.ApplicationInspector.RulesEngine
Microsoft Application Inspector is a software source code analysis tool that helps identify and surface well-known features and other interesting characteristics of source code to aid in determining what the software is or what it does. |
|
Airbyte.Cdk
Package Description |
|
ConfirmSteps.Net
A simple testing suite to confirm the sequence of steps |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on JsonCons.JsonPath:
Repository | Stars |
---|---|
microsoft/ApplicationInspector
A source code analyzer built for surfacing features of interest and other characteristics to answer the question 'What's in the code?' quickly using static analysis with a json based rules engine. Ideal for scanning components before use or detecting feature level changes.
|
Version | Downloads | Last updated |
---|---|---|
1.1.0 | 135,909 | 8/25/2021 |
1.0.0 | 402 | 8/10/2021 |
1.0.0-preview.2 | 209 | 8/2/2021 |
1.0.0-preview.1 | 200 | 7/29/2021 |
Changes:
- class JsonPathOptions renamed to JsonSelectorOptions
- property JsonSelectorOptions.SortBy replaced by
JsonSelectorOptions.Sort, which is a boolean value that indicates
whether to sort results by normalized paths
- JsonPathExecutionMode renamed to PathExecutionMode
Defect fixes:
- Unquoted strings now allow all characters in the range
%x80-10FFFF, as per specification.