raboof - JsonPathLib 0.6.0-ci-20180113T1900

Stand-alone JSONPath (XPath-like syntax for JSON) Library

PM> Install-Package JsonPathLib -Version 0.6.0-ci-20180113T1900 -Source https://www.myget.org/F/raboof/api/v3/index.json

Copy to clipboard

> nuget.exe install JsonPathLib -Version 0.6.0-ci-20180113T1900 -Source https://www.myget.org/F/raboof/api/v3/index.json

Copy to clipboard

> dotnet add package JsonPathLib --version 0.6.0-ci-20180113T1900 --source https://www.myget.org/F/raboof/api/v3/index.json

Copy to clipboard
<PackageReference Include="JsonPathLib" Version="0.6.0-ci-20180113T1900" />
Copy to clipboard
source https://www.myget.org/F/raboof/api/v3/index.json

nuget JsonPathLib  ~> 0.6.0-ci-20180113T1900
Copy to clipboard

> choco install JsonPathLib --version 0.6.0-ci-20180113T1900 --source https://www.myget.org/F/raboof/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "raboof" -SourceLocation "https://www.myget.org/F/raboof/api/v2"
Install-Module -Name "JsonPathLib" -RequiredVersion "0.6.0-ci-20180113T1900" -Repository "raboof" -AllowPreRelease
Copy to clipboard

Browse the sources in this package using Visual Studio or WinDbg by configuring the following legacy symbol server URL: https://www.myget.org/F/raboof/symbols/


JSONPath

Build Status Build Status NuGet MyGet

This project is a C# implementation of JSONPath.

JSONPath Expressions

Portions © 2006 Stefan Gössner

JSONPath expressions always refer to a JSON structure in the same way as XPath expression are used in combination with an XML document. Since a JSON structure is usually anonymous and doesn't necessarily have a root member object JSONPath assumes the abstract name $ assigned to the outer level object.

JSONPath expressions can use the dot-notation:

$.store.book[0].title

or the bracket-notation:

$['store']['book'][0]['title']

for input paths. Internal or output paths will always be converted to the more general bracket-notation.

JSONPath allows the wildcard symbol * for member names and array indices. It borrows the descendant operator .. from E4X and the array slice syntax proposal [start:end:step] from ECMASCRIPT 4.

Expressions of the underlying scripting language (<expr>) can be used as an alternative to explicit names or indices, as in:

$.store.book[(@.length-1)].title

using the symbol @ for the current object. Filter expressions are supported via the syntax ?(<boolean expr>), as in:

$.store.book[?(@.price < 10)].title

Below is a complete overview and a side-by-side comparison of the JSONPath syntax elements with its XPath counterparts:

XPath JSONPath Description
/ $ The root object/element
. @ The current object/element
/ . or [] Child operator
.. n/a Parent operator
// .. Recursive descent. JSONPath borrows this syntax from E4X.
* * Wildcard. All objects/elements regardless their names.
@ n/a Attribute access. JSON structures don't have attributes.
[] [] Subscript operator. XPath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator.
\| [,] Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set.
n/a [start:end:step] Array slice operator borrowed from ES4.
[] ?() Applies a filter (script) expression.
n/a () Script expression, using the underlying script engine.
() n/a Grouping in XPath

Examples

Portions © 2006 Stefan Gössner

Let's practice JSONPath expressions by some more examples. We start with a simple JSON structure built after an XML example representing a bookstore:

{ "store": {
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}
XPath JSONPath Result Notes
/store/book/author $.store.book[*].author The authors of all books in the store
//author $..author All authors
/store/* $.store.* All things in store, which are some books and a red bicycle
/store//price $.store..price The price of everything in the store
//book[3] $..book[2] The third book
//book[last()] $..book[(@.length-1)]
$..book[-1:]
The last book in order
//book[position()<3] $..book[0,1]
$..book[:2]
The first two books
//book/*[self::category\|self::author] or //book/(category,author) in XPath 2.0 $..book[category,author] The categories and authors of all books
//book[isbn] $..book[?(@.isbn)] Filter all books with isbn number
//book[price<10] $..book[?(@.price<10)] Filter all books cheapier than 10
//*[price>19]/.. $..[?(@.price>19)] Categories with things more expensive than 19 Parent (caret) not present in original spec
//* $..* All elements in XML document; all members of JSON structure
/store/book/[position()!=1] $.store.book[?(@path !== "$[\'store\'][\'book\'][0]")] All books besides that at the path pointing to the first @path not present in original spec

See also:

  • .NETStandard 1.5
    • NETStandard.Library (>= 1.6.1)
  • .NETStandard 1.5: 1.5.0.0

                        
Assembly Assembly hash Match
/lib/netstandard1.5/jsonpath.dll 40b86ad62da44158af67e48dda755c9c1

Owners

Atif Aziz

Authors

Atif Aziz

Project URL

https://github.com/atifaziz/JSONPath

License

MIT

Tags

json jsonpath xpath

Info

293 total downloads
76 downloads for version 0.6.0-ci-20180113T1900
Download (9.47 KB)
Download legacy symbols (15.44 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
0.6.0-ci-20180702T0833 9.45 KB Mon, 02 Jul 2018 08:35:31 GMT 80
0.6.0-ci-20180702T0728 9.47 KB Mon, 02 Jul 2018 07:31:18 GMT 65
0.6.0-ci-20180118T1158 9.47 KB Thu, 18 Jan 2018 12:00:56 GMT 72
0.6.0-ci-20180113T1900 9.47 KB Sat, 13 Jan 2018 19:03:26 GMT 76