wcandillon / jsoniq

JSONiq Implementation that compiles to JavaScript
Apache License 2.0
65 stars 7 forks source link

The JSON Query Language

This project was an experiment and should be used under any circumstances

Circle CI NPM version

Compiles JSONiq queries to Javascript.

$ cat query.jq
for $x in (4,1,2,3)
for $y in (4,1,2,3)
order by $x ascending, $y descending
return { x: $x, y: $y }
$ jsoniq compile query.jq
$ node query.js
{ x: 1, y: 4 }
{ x: 1, y: 3 }
{ x: 1, y: 2 }
{ x: 1, y: 1 }
{ x: 2, y: 4 }
{ x: 2, y: 3 }
...

Install

$ npm install jsoniq -g

Compiled queries need to access the runtime library therefore the jsoniq package needs to be installed as well.

$ npm install jsoniq --save
$ jsoniq compile test.jq
$ node test.js

Usage

To compile a query to JavaScript:

$ cat query.jq
for $x in (4,1,2,3)
for $y in (4,1,2,3)
order by $x ascending, $y descending
return { x: $x, y: $y }
$ jsoniq compile query.jq
$ node query.js
{ x: 1, y: 4 }
{ x: 1, y: 3 }
{ x: 1, y: 2 }
{ x: 1, y: 1 }
{ x: 2, y: 4 }
{ x: 2, y: 3 }
...

Or to run the query directly

$ jsoniq run query.jq

To print the query AST:

$ jsoniq ast query.jq

To print the query plan:

$ jsoniq plan query.jq