jsonpath-proxy

1.0.3 • Public • Published

JSONPath

JSONPath expressions as first class JS object properties

Proxies jsonpath queries as JS object property chain

Usage

const $ = require('jsonpath-proxy')(json)
const result = $.path["[query]"]

Query Example

const jsonpath = require('jsonpath-proxy')
 
var cities = [
  { name: "London", "population": 8615246 },
  { name: "Berlin", "population": 3517424 },
  { name: "Madrid", "population": 3165235 },
  { name: "Rome",   "population": 2870528 }
];
 
var $ = jsonpath.$(cities);
var names = $['..'].name;
 
// [ "London", "Berlin", "Madrid", "Rome" ]

The same example with jsonpath

var cities = [
  { name: "London", "population": 8615246 },
  { name: "Berlin", "population": 3517424 },
  { name: "Madrid", "population": 3165235 },
  { name: "Rome",   "population": 2870528 }
];
 
const jsonpath = require('jsonpath-proxy') // same as require('jsonpath')
var names = jsonpath.query(cities, '$..name');
 
// [ "London", "Berlin", "Madrid", "Rome" ]

Install

Install from npm:

$ npm install jsonpath-proxy

JSONPath Syntax

Here are syntax and examples adapted from Stefan Goessner's original post introducing JSONPath in 2007.

JSONPath Description
$ The root object/element
@ The current object/element
. Child member operator
.. Recursive descendant operator; JSONPath borrows this syntax from E4X
* Wildcard matching all objects/elements regardless their names
[] Subscript operator
[,] Union operator for alternate names or array indices as a set
[start:end:step] Array slice operator borrowed from ES4 / Python
?() Applies a filter (script) expression via static evaluation
() Script expression via static evaluation

Given this sample data set, see example expressions below:

{
  "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
    }
  }
}

Example jsonpath-proxy.$ expressions:

JSONPath Description
$.store.book["*"].author The authors of all books in the store
$[".."].author All authors
$.store.["*"] All things in store, which are some books and a red bicycle
$.store[".."].price The price of everything in the store
$[".."]book[2] The third book
$[".."]book("[(@.length-1)]"] The last book via script subscript
$[".."]book["[-1:]"] The last book via slice
$[".."]book["[0,1]"] The first two books via subscript union
$[".."]book["[:2]"] The first two books via subscript array slice
$[".."]book["[?(@.isbn)]"] Filter all books with isbn number
$[".."]book["[?(@.price<10)]"] Filter all books cheaper than 10
$[".."]book["[?(@.price==8.95)]"] Filter all books that cost 8.95
$[".."]book["[?(@.price<30 && @.category=="fiction")]"] Filter all fiction books cheaper than 30
$[".."]["*"] All members of JSON structure

Example jsonpath.query expressions:

JSONPath Description
$.store.book[*].author The authors of all books in the store
$..author All authors
$.store.* All things in store, which are some books and a red bicycle
$.store..price The price of everything in the store
$..book[2] The third book
$..book[(@.length-1)] The last book via script subscript
$..book[-1:] The last book via slice
$..book[0,1] The first two books via subscript union
$..book[:2] The first two books via subscript array slice
$..book[?(@.isbn)] Filter all books with isbn number
$..book[?(@.price<10)] Filter all books cheaper than 10
$..book[?(@.price==8.95)] Filter all books that cost 8.95
$..book[?(@.price<30 && @.category=="fiction")] Filter all fiction books cheaper than 30
$..* All members of JSON structure

All other jsonpath api methods

@see https://www.npmjs.com/package/jsonpath

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i jsonpath-proxy

Weekly Downloads

4

Version

1.0.3

License

MIT

Unpacked Size

11.6 kB

Total Files

5

Last publish

Collaborators

  • fijiwebdesign