A .NET library for extracting values from JSON with simple expressions, similar to XPath for XML but type-safe. Supports JSON, XML and YAML parsing with intuitive syntax like json[2]["aNumber"] and LINQ integration.
$ dotnet add package JsonPathA .NET library for extracting values from JSON and XML with simple expressions, similar to XPath for XML but type-safe.
json[2]["aNumber"].AsInt, .AsString, .AsDictionary, etc.using JsonPath;
// Parse JSON
var json = Node.FromJson("""
[
"1st",
"2nd",
{
"aString": "Hello World",
"aNumber": 42
}
]
""");
// Extract values
int number = json[2]["aNumber"]; // 42
string text = json[2]["aString"]; // "Hello World"
var explicitInt = json[2]["aNumber"].AsInt; // 42
// Safe navigation - no exceptions for invalid paths
int invalid = json[1000]["noNumber"]; // 0 (default value)
// Iterate over collections
foreach (var pair in json[2]) {
Console.WriteLine($"{pair.Key} = {pair.Value}");
}
// LINQ support
int result = json[2].Where(x => x.Key == "aNumber").Select(x => x.Value).First();
// Parse YAML
var xml = Node.FromXml("""
<root>
<item>1st</item>
<item>2nd</item>
<item>
<aNumber>42</aNumber>
</item>
</root>
""");
var number = xml[Xml.Children][2][Xml.Children]
.AsList.FirstOrDefault(x => x[Xml.Name] == "aNumber")?[Xml.Text].AsInt;
var xml = Node.FromYaml("""
doc:
- item: 1st
- item: 2nd
- aString: Hello World
aNumber: 42
""");
int number = json[2]["aNumber"];
dotnet add package JsonPath
MIT License