0.1.6 • Published 3 years ago

espression-jsonpath v0.1.6

Weekly downloads
62
License
MIT
Repository
github
Last release
3 years ago

ESpression-jsonPath

ESpression preset to parse and eval jsonPath expressions.

Try it live at ESpression Tester

Usage

jsonPath expressions can be handled in two ways:

  • pure jsonPath expressions: $..member
  • mixed ES5 expressions with jsonPath: a + <$..member>.values[0] * 2

pure jsonPath expressions

In this case only a valid jsonPath expression is allowed in the parser.

import { JsonPath } from 'espression-jsonpath';

const jp = new JsonPath();

let result = jp.query({a:1, b:2, c:3, d: [1,2,3]}, '$..d[:-1]');

The query returns a JsonPathResult object with the following properties:

  • values: array of matching values
  • paths: array of matching paths (each an array of strings with the keys)
  • root: the object being queried

This is shorthand for:

import { JsonPathParser, JsonPathStaticEval } from 'espression-jsonpath';

const parser = new JsonPathParser();
const staticEval = JsonPathStaticEval();

let ast = parser.parse('$..d[:-1]');
let result = staticEval.evaluate(ast, {$: {a:1, b:2, c:3, d: [1,2,3]}});

mixed expressions

This preset introduces a new syntax to mix jsonPath inside a normal ES5 expression with a jsonPath literal notation. It is a regular jsonPath expression enclosed in <>, it returns a jsonPath object as described above.

import { JsonPath } from 'espression-jsonpath';

const jp = new JsonPath();

let result = jp.eval('x + <z..d[:-1]>.values[0]', {x: 10, z: {a:1, b:2, c:3, d: [1,2,3]}});

This is shorthand for:

import { ES5PathParser, JsonPathStaticEval } from 'espression-jsonpath';

const parser = new ES5PathParser();
const staticEval = new JsonPathStaticEval();

let ast = parser.parse('x + <z..d[:-1]>.values[0]');
let result = staticEval.evaluate(ast, {x: 10, z: {a:1, b:2, c:3, d: [1,2,3]}});

Bundling

Each of these components is fully independent, so that when included with es6 imports, your final bundle can then be tree shaken, and only the used presets/rules included.

License

MIT.

0.1.6

3 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago